{
  "title" : "Duplication",
  "timestamp" : "2026-01-18 17:07:48",
  "duplicates" : [ {
    "blockSize" : 27,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Frontend/grammarkit/src/lexer/_T4Lexer.flex",
        "extension" : "flex",
        "linesOfCode" : 28,
        "components" : [ "primary::Frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 1,
      "endLine" : 35,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 27
    }, {
      "file" : {
        "relativePath" : "Frontend/src/main/kotlin/com/jetbrains/fortea/lexer/_T4Lexer.flex",
        "extension" : "flex",
        "linesOfCode" : 28,
        "components" : [ "primary::Frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 1,
      "endLine" : 35,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 27
    } ]
  }, {
    "blockSize" : 11,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/TemplateProcessing/CodeCollecting/State/T4InfoCollectorStateSeenFeature.cs",
        "extension" : "cs",
        "linesOfCode" : 43,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 22,
      "startLine" : 28,
      "endLine" : 49,
      "cleanedStartLine" : 12,
      "cleanedEndLine" : 22
    }, {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/TemplateProcessing/CodeCollecting/State/T4InfoCollectorStateSeenFeatureAndExpressionBlock.cs",
        "extension" : "cs",
        "linesOfCode" : 51,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 26,
      "startLine" : 42,
      "endLine" : 62,
      "cleanedStartLine" : 16,
      "cleanedEndLine" : 26
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Frontend/src/main/kotlin/com/jetbrains/fortea/configuration/run/execution/T4DebugProfileWrapperState.kt",
        "extension" : "kt",
        "linesOfCode" : 54,
        "components" : [ "primary::Frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 21,
      "endLine" : 30,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    }, {
      "file" : {
        "relativePath" : "Frontend/src/main/kotlin/com/jetbrains/fortea/configuration/run/execution/T4RunProfileWrapperState.kt",
        "extension" : "kt",
        "linesOfCode" : 29,
        "components" : [ "primary::Frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 18,
      "startLine" : 19,
      "endLine" : 28,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 8,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Backend/ReSharperPlugin/ForTea.ReSharperPlugin/T4ReSharperEnvironment.cs",
        "extension" : "cs",
        "linesOfCode" : 178,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 133,
      "startLine" : 177,
      "endLine" : 185,
      "cleanedStartLine" : 106,
      "cleanedEndLine" : 113
    }, {
      "file" : {
        "relativePath" : "Backend/ReSharperPlugin/ForTea.ReSharperPlugin/T4ReSharperEnvironment.cs",
        "extension" : "cs",
        "linesOfCode" : 178,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 133,
      "startLine" : 190,
      "endLine" : 198,
      "cleanedStartLine" : 117,
      "cleanedEndLine" : 124
    } ]
  }, {
    "blockSize" : 7,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/Psi/Cache/T4IndirectFileChangeObserverBase.cs",
        "extension" : "cs",
        "linesOfCode" : 69,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 38,
      "startLine" : 30,
      "endLine" : 40,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    }, {
      "file" : {
        "relativePath" : "Backend/ReSharperPlugin/ForTea.ReSharperPlugin/Psi/Resolve/Macros/T4MacroResolutionCache.T4AfterMacroCacheBuiltFileInvalidator.cs",
        "extension" : "cs",
        "linesOfCode" : 58,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 29,
      "endLine" : 39,
      "cleanedStartLine" : 11,
      "cleanedEndLine" : 17
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Frontend/src/main/kotlin/com/jetbrains/fortea/configuration/run/task/T4BuildProjectsBeforeRunTaskProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 70,
        "components" : [ "primary::Frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 35,
      "endLine" : 42,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "Frontend/src/main/kotlin/com/jetbrains/fortea/configuration/run/task/T4CompileBeforeRunTaskProvider.kt",
        "extension" : "kt",
        "linesOfCode" : 63,
        "components" : [ "primary::Frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 39,
      "startLine" : 30,
      "endLine" : 37,
      "cleanedStartLine" : 8,
      "cleanedEndLine" : 13
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Frontend/src/main/kotlin/com/jetbrains/fortea/configuration/execution/impl/T4AsyncRunConfigurationExecutorBase.kt",
        "extension" : "kt",
        "linesOfCode" : 25,
        "components" : [ "primary::Frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 17,
      "startLine" : 19,
      "endLine" : 24,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "Frontend/src/main/kotlin/com/jetbrains/fortea/configuration/execution/impl/T4SynchronousRunConfigurationExecutor.kt",
        "extension" : "kt",
        "linesOfCode" : 62,
        "components" : [ "primary::Frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 42,
      "startLine" : 35,
      "endLine" : 40,
      "cleanedStartLine" : 17,
      "cleanedEndLine" : 22
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/Parsing/Lexing/T4Lexer.lex",
        "extension" : "lex",
        "linesOfCode" : 19,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 13,
      "endLine" : 20,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "Frontend/grammarkit/src/lexer/_T4Lexer.flex",
        "extension" : "flex",
        "linesOfCode" : 28,
        "components" : [ "primary::Frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/TemplateProcessing/CodeCollecting/Descriptions/T4CodeDescription.cs",
        "extension" : "cs",
        "linesOfCode" : 32,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 25,
      "endLine" : 31,
      "cleanedStartLine" : 14,
      "cleanedEndLine" : 19
    }, {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/TemplateProcessing/CodeCollecting/Descriptions/T4TextDescription.cs",
        "extension" : "cs",
        "linesOfCode" : 51,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 43,
      "endLine" : 49,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/Daemon/Highlightings/SyntaxHighlightings.cs",
        "extension" : "cs",
        "linesOfCode" : 53,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 9,
      "endLine" : 14,
      "cleanedStartLine" : 1,
      "cleanedEndLine" : 6
    }, {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/Daemon/Highlightings/SyntaxHighlightings.cs",
        "extension" : "cs",
        "linesOfCode" : 53,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 37,
      "startLine" : 29,
      "endLine" : 34,
      "cleanedStartLine" : 15,
      "cleanedEndLine" : 20
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/Services/CodeStructure/T4CSharpCodeStructureAspects.cs",
        "extension" : "cs",
        "linesOfCode" : 77,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 49,
      "endLine" : 54,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    }, {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/Services/CodeStructure/T4CodeStructureDirective.cs",
        "extension" : "cs",
        "linesOfCode" : 84,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 48,
      "startLine" : 54,
      "endLine" : 59,
      "cleanedStartLine" : 23,
      "cleanedEndLine" : 28
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/TemplateProcessing/CodeCollecting/State/T4InfoCollectorStateSeenFeatureAndNewLine.cs",
        "extension" : "cs",
        "linesOfCode" : 42,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 23,
      "startLine" : 23,
      "endLine" : 30,
      "cleanedStartLine" : 5,
      "cleanedEndLine" : 10
    }, {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/TemplateProcessing/CodeCollecting/State/T4InfoCollectorStateSeenFeatureAndText.cs",
        "extension" : "cs",
        "linesOfCode" : 48,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 30,
      "startLine" : 35,
      "endLine" : 42,
      "cleanedStartLine" : 13,
      "cleanedEndLine" : 18
    } ]
  }, {
    "blockSize" : 6,
    "duplicatedFileBlocks" : [ {
      "file" : {
        "relativePath" : "Backend/Core/ForTea.Core/Parsing/Lexing/T4Lexer.lex",
        "extension" : "lex",
        "linesOfCode" : 19,
        "components" : [ "primary::Backend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 19,
      "startLine" : 13,
      "endLine" : 20,
      "cleanedStartLine" : 10,
      "cleanedEndLine" : 15
    }, {
      "file" : {
        "relativePath" : "Frontend/src/main/kotlin/com/jetbrains/fortea/lexer/_T4Lexer.flex",
        "extension" : "flex",
        "linesOfCode" : 28,
        "components" : [ "primary::Frontend" ],
        "concerns" : [ "::Unclassified" ]
      },
      "sourceFileCleanedLinesOfCode" : 28,
      "startLine" : 25,
      "endLine" : 32,
      "cleanedStartLine" : 19,
      "cleanedEndLine" : 24
    } ]
  } ],
  "overallDuplication" : null
}