[ {
  "key" : "primary",
  "components" : [ {
    "name" : "viewmodel",
    "filesCount" : 5,
    "linesOfCode" : 208,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.kt",
      "value" : 5,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.kt",
      "value" : 208,
      "description" : [ ]
    } ]
  }, {
    "name" : "core",
    "filesCount" : 5,
    "linesOfCode" : 371,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.kt",
      "value" : 5,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.kt",
      "value" : 371,
      "description" : [ ]
    } ]
  }, {
    "name" : "config",
    "filesCount" : 2,
    "linesOfCode" : 2,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.java",
      "value" : 1,
      "description" : [ ]
    }, {
      "name" : "  *.kt",
      "value" : 1,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.java",
      "value" : 1,
      "description" : [ ]
    }, {
      "name" : "  *.kt",
      "value" : 1,
      "description" : [ ]
    } ]
  }, {
    "name" : "models",
    "filesCount" : 10,
    "linesOfCode" : 505,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.kt",
      "value" : 10,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.kt",
      "value" : 505,
      "description" : [ ]
    } ]
  }, {
    "name" : "lib",
    "filesCount" : 12,
    "linesOfCode" : 105,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.java",
      "value" : 12,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.java",
      "value" : 105,
      "description" : [ ]
    } ]
  }, {
    "name" : "ast",
    "filesCount" : 10,
    "linesOfCode" : 133,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.kt",
      "value" : 10,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.kt",
      "value" : 133,
      "description" : [ ]
    } ]
  }, {
    "name" : "intellij",
    "filesCount" : 51,
    "linesOfCode" : 3001,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.kt",
      "value" : 50,
      "description" : [ ]
    }, {
      "name" : "  *.xml",
      "value" : 1,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.kt",
      "value" : 2917,
      "description" : [ ]
    }, {
      "name" : "  *.xml",
      "value" : 84,
      "description" : [ ]
    } ]
  }, {
    "name" : "errormessage",
    "filesCount" : 30,
    "linesOfCode" : 578,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.kt",
      "value" : 30,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.kt",
      "value" : 578,
      "description" : [ ]
    } ]
  }, {
    "name" : "compiler",
    "filesCount" : 26,
    "linesOfCode" : 2541,
    "numberOfRegexLineMatches" : 0,
    "fileCountPerExtension" : [ {
      "name" : "  *.kt",
      "value" : 26,
      "description" : [ ]
    } ],
    "linesOfCodePerExtension" : [ {
      "name" : "  *.kt",
      "value" : 2541,
      "description" : [ ]
    } ]
  } ],
  "componentDependencies" : [ {
    "fromComponent" : "viewmodel",
    "locFrom" : 187,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "viewmodel/src/main/kotlin/motif/viewmodel/GraphViewModel.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "viewmodel/src/main/kotlin/motif/viewmodel/TestRenderer.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    } ],
    "toComponent" : "core",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "viewmodel -> core"
  }, {
    "fromComponent" : "viewmodel",
    "locFrom" : 208,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "viewmodel/src/main/kotlin/motif/viewmodel/RequiredDependency.kt",
      "evidence" : "import motif.models.Sink"
    }, {
      "pathFrom" : "viewmodel/src/main/kotlin/motif/viewmodel/ProvidedDependency.kt",
      "evidence" : "import motif.models.Sink"
    }, {
      "pathFrom" : "viewmodel/src/main/kotlin/motif/viewmodel/ScopeViewModel.kt",
      "evidence" : "import motif.models.Scope"
    }, {
      "pathFrom" : "viewmodel/src/main/kotlin/motif/viewmodel/GraphViewModel.kt",
      "evidence" : "import motif.models.ChildParameterSource"
    }, {
      "pathFrom" : "viewmodel/src/main/kotlin/motif/viewmodel/TestRenderer.kt",
      "evidence" : "import motif.models.AccessMethodSink"
    } ],
    "toComponent" : "models",
    "count" : 5,
    "text" : null,
    "color" : "",
    "dependencyString" : "viewmodel -> models"
  }, {
    "fromComponent" : "core",
    "locFrom" : 332,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "core/src/main/kotlin/motif/core/State.kt",
      "evidence" : "import motif.models.Dependencies"
    }, {
      "pathFrom" : "core/src/main/kotlin/motif/core/ResolvedGraph.kt",
      "evidence" : "import motif.models.MotifError"
    }, {
      "pathFrom" : "core/src/main/kotlin/motif/core/ScopeGraph.kt",
      "evidence" : "import motif.models.ChildMethod"
    }, {
      "pathFrom" : "core/src/main/kotlin/motif/core/ProcessingError.kt",
      "evidence" : "import motif.models.MotifError"
    } ],
    "toComponent" : "models",
    "count" : 4,
    "text" : null,
    "color" : "",
    "dependencyString" : "core -> models"
  }, {
    "fromComponent" : "core",
    "locFrom" : 316,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "core/src/main/kotlin/motif/core/State.kt",
      "evidence" : "import motif.ast.IrType"
    }, {
      "pathFrom" : "core/src/main/kotlin/motif/core/ResolvedGraph.kt",
      "evidence" : "import motif.ast.IrClass"
    }, {
      "pathFrom" : "core/src/main/kotlin/motif/core/ScopeGraph.kt",
      "evidence" : "import motif.ast.IrType"
    } ],
    "toComponent" : "ast",
    "count" : 3,
    "text" : null,
    "color" : "",
    "dependencyString" : "core -> ast"
  }, {
    "fromComponent" : "models",
    "locFrom" : 462,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "models/src/main/kotlin/motif/models/Spread.kt",
      "evidence" : "import motif.ast.IrClass"
    }, {
      "pathFrom" : "models/src/main/kotlin/motif/models/Scope.kt",
      "evidence" : "import motif.ast.IrClass"
    }, {
      "pathFrom" : "models/src/main/kotlin/motif/models/Dependencies.kt",
      "evidence" : "import motif.ast.IrClass"
    }, {
      "pathFrom" : "models/src/main/kotlin/motif/models/Objects.kt",
      "evidence" : "import motif.ast.IrClass"
    }, {
      "pathFrom" : "models/src/main/kotlin/motif/models/ScopeMethod.kt",
      "evidence" : "import motif.ast.IrClass"
    }, {
      "pathFrom" : "models/src/main/kotlin/motif/models/FactoryMethod.kt",
      "evidence" : "import motif.ast.IrClass"
    }, {
      "pathFrom" : "models/src/main/kotlin/motif/models/ParsingError.kt",
      "evidence" : "import motif.ast.IrAnnotated"
    }, {
      "pathFrom" : "models/src/main/kotlin/motif/models/Type.kt",
      "evidence" : "import motif.ast.IrAnnotated"
    } ],
    "toComponent" : "ast",
    "count" : 8,
    "text" : null,
    "color" : "",
    "dependencyString" : "models -> ast"
  }, {
    "fromComponent" : "intellij",
    "locFrom" : 1248,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "intellij/ast/src/main/kotlin/motif/ast/intellij/IrUtil.kt",
      "evidence" : "import motif.ast.IrAnnotation"
    }, {
      "pathFrom" : "intellij/ast/src/main/kotlin/motif/ast/intellij/IntelliJMethodParameter.kt",
      "evidence" : "import motif.ast.IrAnnotation"
    }, {
      "pathFrom" : "intellij/ast/src/main/kotlin/motif/ast/intellij/IntelliJMethod.kt",
      "evidence" : "import motif.ast.IrAnnotation"
    }, {
      "pathFrom" : "intellij/ast/src/main/kotlin/motif/ast/intellij/IntelliJField.kt",
      "evidence" : "import motif.ast.IrField"
    }, {
      "pathFrom" : "intellij/ast/src/main/kotlin/motif/ast/intellij/IntelliJType.kt",
      "evidence" : "import motif.ast.IrClass"
    }, {
      "pathFrom" : "intellij/ast/src/main/kotlin/motif/ast/intellij/IntelliJAnnotation.kt",
      "evidence" : "import motif.ast.IrAnnotation"
    }, {
      "pathFrom" : "intellij/ast/src/main/kotlin/motif/ast/intellij/IntelliJClass.kt",
      "evidence" : "import motif.ast.IrAnnotation"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ScopeHierarchyTreeStructure.kt",
      "evidence" : "import motif.ast.IrType"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ScopeHierarchyBrowser.kt",
      "evidence" : "import motif.ast.IrType"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ScopePropertyHierarchyBrowser.kt",
      "evidence" : "import motif.ast.IrType"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySinkDescriptor.kt",
      "evidence" : "import motif.ast.IrMethod"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/ScopeHierarchyUtils.kt",
      "evidence" : "import motif.ast.IrType"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/GraphManager.kt",
      "evidence" : "import motif.ast.IrClass"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/GraphFactory.kt",
      "evidence" : "import motif.ast.IrClass"
    } ],
    "toComponent" : "ast",
    "count" : 14,
    "text" : null,
    "color" : "",
    "dependencyString" : "intellij -> ast"
  }, {
    "fromComponent" : "intellij",
    "locFrom" : 2480,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/ui/MotifScopePanel.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/ui/MotifErrorPanel.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/ui/MotifUsagePanel.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/UsageHierarchyBrowser.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ScopeHierarchyTreeStructure.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ScopeHierarchyBrowser.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ErrorHierarchyBrowser.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ScopePropertyHierarchyBrowser.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySinksSectionDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySourcesSectionDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyDependenciesSectionDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySinkDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySimpleDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyDependencyDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyUsageSourcesSectionDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyUsageSectionDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyUsageSinksSectionDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySourcesAndSinksSectionDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySinkDetailsDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySourceDetailsDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySourceDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyRootErrorDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyErrorDescriptor.kt",
      "evidence" : "import motif.core.AlreadySatisfiedError"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyRootScopeNodeDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyScopeDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyNodeDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyScopeAncestorDescriptor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/ScopeHierarchyUtils.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/GraphManager.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/MotifService.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/GraphFactory.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/provider/ScopeNavigationLineMarkerProvider.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/provider/ScopeHierarchyLineMarkerProvider.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/actions/MotifAncestorGraphAction.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/actions/MotifGraphAction.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/actions/MotifUsageAction.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    } ],
    "toComponent" : "core",
    "count" : 36,
    "text" : null,
    "color" : "",
    "dependencyString" : "intellij -> core"
  }, {
    "fromComponent" : "intellij",
    "locFrom" : 1557,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/ui/MotifScopePanel.kt",
      "evidence" : "import motif.models.Scope"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/ui/MotifErrorPanel.kt",
      "evidence" : "import motif.models.MotifError"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ScopeHierarchyTreeStructure.kt",
      "evidence" : "import motif.models.Dependencies"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ScopeHierarchyBrowser.kt",
      "evidence" : "import motif.models.Scope"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ErrorHierarchyBrowser.kt",
      "evidence" : "import motif.models.MotifError"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ScopePropertyHierarchyBrowser.kt",
      "evidence" : "import motif.models.Scope"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySinksSectionDescriptor.kt",
      "evidence" : "import motif.models.Scope"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySourcesSectionDescriptor.kt",
      "evidence" : "import motif.models.Scope"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyDependenciesSectionDescriptor.kt",
      "evidence" : "import motif.models.Scope"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySinkDescriptor.kt",
      "evidence" : "import motif.models.AccessMethodSink"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyDependencyDescriptor.kt",
      "evidence" : "import motif.models.Dependencies"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySourcesAndSinksSectionDescriptor.kt",
      "evidence" : "import motif.models.Scope"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySinkDetailsDescriptor.kt",
      "evidence" : "import motif.models.Sink"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySourceDetailsDescriptor.kt",
      "evidence" : "import motif.models.Source"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchySourceDescriptor.kt",
      "evidence" : "import motif.models.ChildParameterSource"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyErrorDescriptor.kt",
      "evidence" : "import motif.models.AccessMethodParameters"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyScopeDescriptor.kt",
      "evidence" : "import motif.models.ErrorScope"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyScopeAncestorDescriptor.kt",
      "evidence" : "import motif.models.Scope"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/ScopeHierarchyUtils.kt",
      "evidence" : "import motif.models.ChildParameterSource"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/GraphManager.kt",
      "evidence" : "import motif.models.ConstructorFactoryMethod"
    } ],
    "toComponent" : "models",
    "count" : 20,
    "text" : null,
    "color" : "",
    "dependencyString" : "intellij -> models"
  }, {
    "fromComponent" : "intellij",
    "locFrom" : 485,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/ui/MotifErrorPanel.kt",
      "evidence" : "import motif.errormessage.ErrorMessage"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ScopeHierarchyTreeStructure.kt",
      "evidence" : "import motif.errormessage.ErrorMessage"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/ErrorHierarchyBrowser.kt",
      "evidence" : "import motif.errormessage.ErrorMessage"
    }, {
      "pathFrom" : "intellij/src/main/kotlin/motif/intellij/hierarchy/descriptor/ScopeHierarchyErrorDescriptor.kt",
      "evidence" : "import motif.errormessage.ErrorMessage"
    } ],
    "toComponent" : "errormessage",
    "count" : 4,
    "text" : null,
    "color" : "",
    "dependencyString" : "intellij -> errormessage"
  }, {
    "fromComponent" : "errormessage",
    "locFrom" : 195,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/DependencyCycleHandler.kt",
      "evidence" : "import motif.core.DependencyCycleError"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/UnexposedSourceHandler.kt",
      "evidence" : "import motif.core.UnexposedSourceError"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/ErrorMessage.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/AlreadySatisfiedHandler.kt",
      "evidence" : "import motif.core.AlreadySatisfiedError"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/UnsatisfiedDependencyHandler.kt",
      "evidence" : "import motif.core.UnsatisfiedDependencyError"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/ErrorHandler.kt",
      "evidence" : "import motif.core.AlreadySatisfiedError"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/ScopeCycleHandler.kt",
      "evidence" : "import motif.core.ScopeCycleError"
    } ],
    "toComponent" : "core",
    "count" : 7,
    "text" : null,
    "color" : "",
    "dependencyString" : "errormessage -> core"
  }, {
    "fromComponent" : "errormessage",
    "locFrom" : 495,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/NullableDynamicDependencyHandler.kt",
      "evidence" : "import motif.models.NullableDynamicDependency"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/NotAssignableBindsMethodHandler.kt",
      "evidence" : "import motif.models.NotAssignableBindsMethod"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/VoidDependenciesMethodHandler.kt",
      "evidence" : "import motif.models.VoidDependenciesMethod"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/ScopeMustBeAnInterfaceHandler.kt",
      "evidence" : "import motif.models.ScopeMustBeAnInterface"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/DuplicatedDependenciesMethodHandler.kt",
      "evidence" : "import motif.models.DuplicatedDependenciesMethod"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/NullableParameterHandler.kt",
      "evidence" : "import motif.models.NullableParameter"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/ErrorMessage.kt",
      "evidence" : "import motif.models.MotifError"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/ScopeExtendsScopeMethodHandler.kt",
      "evidence" : "import motif.models.ScopeExtendsScope"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/NodeHandler.kt",
      "evidence" : "import motif.models.AccessMethodSink"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/NullableSpreadMethodHandler.kt",
      "evidence" : "import motif.models.NullableSpreadMethod"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/InvalidFactoryMethodHandler.kt",
      "evidence" : "import motif.models.InvalidFactoryMethod"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/ErrorHandler.kt",
      "evidence" : "import motif.models.AccessMethodParameters"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/VoidScopeMethodHandler.kt",
      "evidence" : "import motif.models.VoidScopeMethod"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/UnspreadableTypeHandler.kt",
      "evidence" : "import motif.models.UnspreadableType"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/VoidFactoryMethodHandler.kt",
      "evidence" : "import motif.models.VoidFactoryMethod"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/CannotResolveTypeHandler.kt",
      "evidence" : "import motif.models.CannotResolveType"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/AccessMethodParametersHandler.kt",
      "evidence" : "import motif.models.AccessMethodParameters"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/DependencyMethodWithParametersHandler.kt",
      "evidence" : "import motif.models.DependencyMethodWithParameters"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/NullableFactoryMethodHandler.kt",
      "evidence" : "import motif.models.NullableFactoryMethod"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/ObjectsFieldFoundHandler.kt",
      "evidence" : "import motif.models.ObjectsFieldFound"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/InvalidQualifierHandler.kt",
      "evidence" : "import motif.models.InvalidQualifier"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/ObjectsConstructorFoundHandler.kt",
      "evidence" : "import motif.models.ObjectsConstructorFound"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/InjectAnnotationRequiredHandler.kt",
      "evidence" : "import motif.models.InjectAnnotationRequired"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/NoSuitableConstructorHandler.kt",
      "evidence" : "import motif.models.NoSuitableConstructor"
    }, {
      "pathFrom" : "errormessage/src/main/kotlin/motif/errormessage/DuplicatedChildParameterSourceHandler.kt",
      "evidence" : "import motif.models.DuplicatedChildParameterSource"
    } ],
    "toComponent" : "models",
    "count" : 25,
    "text" : null,
    "color" : "",
    "dependencyString" : "errormessage -> models"
  }, {
    "fromComponent" : "compiler",
    "locFrom" : 534,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "compiler/ksp/src/main/kotlin/motif/compiler/ksp/MotifSymbolProcessorProvider.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "compiler/src/main/kotlin/motif/compiler/Processor.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "compiler/src/main/kotlin/motif/compiler/MotifProcessingStep.kt",
      "evidence" : "import motif.core.AlreadySatisfiedError"
    }, {
      "pathFrom" : "compiler/src/main/kotlin/motif/compiler/ScopeImplFactory.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    }, {
      "pathFrom" : "compiler/src/main/kotlin/motif/compiler/CodeGenerator.kt",
      "evidence" : "import motif.core.ResolvedGraph"
    } ],
    "toComponent" : "core",
    "count" : 5,
    "text" : null,
    "color" : "",
    "dependencyString" : "compiler -> core"
  }, {
    "fromComponent" : "compiler",
    "locFrom" : 701,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "compiler/ast/src/main/kotlin/motif/ast/compiler/CompilerMethod.kt",
      "evidence" : "import motif.ast.IrAnnotation"
    }, {
      "pathFrom" : "compiler/ast/src/main/kotlin/motif/ast/compiler/CompilerField.kt",
      "evidence" : "import motif.ast.IrField"
    }, {
      "pathFrom" : "compiler/ast/src/main/kotlin/motif/ast/compiler/IrUtil.kt",
      "evidence" : "import motif.ast.IrAnnotation"
    }, {
      "pathFrom" : "compiler/ast/src/main/kotlin/motif/ast/compiler/CompilerAnnotation.kt",
      "evidence" : "import motif.ast.IrAnnotation"
    }, {
      "pathFrom" : "compiler/ast/src/main/kotlin/motif/ast/compiler/CompilerMethodParameter.kt",
      "evidence" : "import motif.ast.IrAnnotation"
    }, {
      "pathFrom" : "compiler/ast/src/main/kotlin/motif/ast/compiler/CompilerType.kt",
      "evidence" : "import motif.ast.IrClass"
    }, {
      "pathFrom" : "compiler/ast/src/main/kotlin/motif/ast/compiler/CompilerClass.kt",
      "evidence" : "import motif.ast.IrAnnotation"
    }, {
      "pathFrom" : "compiler/src/main/kotlin/motif/compiler/ScopeImplFactory.kt",
      "evidence" : "import motif.ast.IrClass"
    } ],
    "toComponent" : "ast",
    "count" : 8,
    "text" : null,
    "color" : "",
    "dependencyString" : "compiler -> ast"
  }, {
    "fromComponent" : "compiler",
    "locFrom" : 447,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "compiler/src/main/kotlin/motif/compiler/Names.kt",
      "evidence" : "import motif.models.Type"
    }, {
      "pathFrom" : "compiler/src/main/kotlin/motif/compiler/ScopeImplFactory.kt",
      "evidence" : "import motif.models.AccessMethodSink"
    } ],
    "toComponent" : "models",
    "count" : 2,
    "text" : null,
    "color" : "",
    "dependencyString" : "compiler -> models"
  }, {
    "fromComponent" : "compiler",
    "locFrom" : 82,
    "valueFrom" : 0.0,
    "valueTo" : 0.0,
    "evidence" : [ {
      "pathFrom" : "compiler/src/main/kotlin/motif/compiler/MotifProcessingStep.kt",
      "evidence" : "import motif.errormessage.ErrorMessage"
    } ],
    "toComponent" : "errormessage",
    "count" : 1,
    "text" : null,
    "color" : "",
    "dependencyString" : "compiler -> errormessage"
  } ],
  "componentDependenciesErrors" : [ ],
  "logicalDecomposition" : {
    "name" : "primary",
    "scope" : "main",
    "filters" : [ ],
    "componentsFolderDepth" : 1,
    "minComponentsCount" : 0,
    "components" : [ {
      "name" : "viewmodel",
      "sourceFileFilters" : [ {
        "pathPattern" : "./viewmodel/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "core",
      "sourceFileFilters" : [ {
        "pathPattern" : "./core/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "config",
      "sourceFileFilters" : [ {
        "pathPattern" : "./config/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "models",
      "sourceFileFilters" : [ {
        "pathPattern" : "./models/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "lib",
      "sourceFileFilters" : [ {
        "pathPattern" : "./lib/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "ast",
      "sourceFileFilters" : [ {
        "pathPattern" : "./ast/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "intellij",
      "sourceFileFilters" : [ {
        "pathPattern" : "./intellij/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "errormessage",
      "sourceFileFilters" : [ {
        "pathPattern" : "./errormessage/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    }, {
      "name" : "compiler",
      "sourceFileFilters" : [ {
        "pathPattern" : "./compiler/.*",
        "contentPattern" : "",
        "exception" : false,
        "note" : ""
      } ],
      "files" : [ ]
    } ],
    "metaComponents" : [ ],
    "groups" : [ ],
    "includeRemainingFiles" : true,
    "dependenciesFinder" : {
      "useBuiltInDependencyFinders" : true,
      "rules" : [ ],
      "metaRules" : [ ]
    },
    "renderingOptions" : {
      "orientation" : "TB",
      "maxNumberOfDependencies" : 100,
      "renderComponentsWithoutDependencies" : true,
      "renderIndirectDependencies" : false,
      "renderInternalIndirectDependencies" : false,
      "reverseDirection" : false
    },
    "includeExternalComponents" : true,
    "dependencyLinkThreshold" : 1,
    "duplicationLinkThreshold" : 50,
    "temporalLinkThreshold" : 1,
    "maxSearchDepthLines" : 200
  },
  "fileCountPerComponent" : [ {
    "name" : "viewmodel",
    "value" : 5,
    "description" : [ ]
  }, {
    "name" : "core",
    "value" : 5,
    "description" : [ ]
  }, {
    "name" : "config",
    "value" : 2,
    "description" : [ ]
  }, {
    "name" : "models",
    "value" : 10,
    "description" : [ ]
  }, {
    "name" : "lib",
    "value" : 12,
    "description" : [ ]
  }, {
    "name" : "ast",
    "value" : 10,
    "description" : [ ]
  }, {
    "name" : "intellij",
    "value" : 51,
    "description" : [ ]
  }, {
    "name" : "errormessage",
    "value" : 30,
    "description" : [ ]
  }, {
    "name" : "compiler",
    "value" : 26,
    "description" : [ ]
  } ],
  "linesOfCodePerComponent" : [ {
    "name" : "viewmodel",
    "value" : 208,
    "description" : [ ]
  }, {
    "name" : "core",
    "value" : 371,
    "description" : [ ]
  }, {
    "name" : "config",
    "value" : 2,
    "description" : [ ]
  }, {
    "name" : "models",
    "value" : 505,
    "description" : [ ]
  }, {
    "name" : "lib",
    "value" : 105,
    "description" : [ ]
  }, {
    "name" : "ast",
    "value" : 133,
    "description" : [ ]
  }, {
    "name" : "intellij",
    "value" : 3001,
    "description" : [ ]
  }, {
    "name" : "errormessage",
    "value" : 578,
    "description" : [ ]
  }, {
    "name" : "compiler",
    "value" : 2541,
    "description" : [ ]
  } ]
} ]