[ {
  "shortName" : "renderTree()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/desktop/src/TreeChart.js",
  "fileLinesCount" : 131,
  "components" : [ "primary::android" ],
  "startLine" : 29,
  "endLine" : 125,
  "linesOfCode" : 79,
  "mcCabeIndex" : 12,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun buildChildren()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyTreeStructure.kt",
  "fileLinesCount" : 109,
  "components" : [ "primary::android" ],
  "startLine" : 33,
  "endLine" : 108,
  "linesOfCode" : 76,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun popState()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigator.kt",
  "fileLinesCount" : 299,
  "components" : [ "primary::android" ],
  "startLine" : 75,
  "endLine" : 247,
  "linesOfCode" : 48,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_nestedStepsDoNotRepeat()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Workflow/WorkflowTests.swift",
  "fileLinesCount" : 211,
  "components" : [ "primary::ios" ],
  "startLine" : 23,
  "endLine" : 78,
  "linesOfCode" : 46,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun  execute()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/io/LogcatRequestProcessor.kt",
  "fileLinesCount" : 154,
  "components" : [ "primary::android" ],
  "startLine" : 54,
  "endLine" : 102,
  "linesOfCode" : 41,
  "mcCabeIndex" : 7,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Generator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/Generator.java",
  "fileLinesCount" : 204,
  "components" : [ "primary::android" ],
  "startLine" : 63,
  "endLine" : 108,
  "linesOfCode" : 39,
  "mcCabeIndex" : 8,
  "numberOfParameters" : 4,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void generate()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateAction.java",
  "fileLinesCount" : 217,
  "components" : [ "primary::android" ],
  "startLine" : 109,
  "endLine" : 151,
  "linesOfCode" : 39,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun popState()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/StackRouterNavigator.kt",
  "fileLinesCount" : 419,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 82,
  "linesOfCode" : 39,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeInteractor.java",
  "fileLinesCount" : 122,
  "components" : [ "primary::android" ],
  "startLine" : 49,
  "endLine" : 88,
  "linesOfCode" : 39,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeInteractor.java",
  "fileLinesCount" : 121,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 87,
  "linesOfCode" : 39,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onSelectedRibChanged()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyPanel.kt",
  "fileLinesCount" : 186,
  "components" : [ "primary::android" ],
  "startLine" : 142,
  "endLine" : 180,
  "linesOfCode" : 36,
  "mcCabeIndex" : 7,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeInteractor.java",
  "fileLinesCount" : 103,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 77,
  "linesOfCode" : 36,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeInteractor.java",
  "fileLinesCount" : 103,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 77,
  "linesOfCode" : 36,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun attachChild()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 107,
  "endLine" : 142,
  "linesOfCode" : 34,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_didStart_onceOnly_boundToInteractor()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Worker/WorkerTests.swift",
  "fileLinesCount" : 128,
  "components" : [ "primary::ios" ],
  "startLine" : 40,
  "endLine" : 85,
  "linesOfCode" : 32,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void onNext()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 124,
  "endLine" : 154,
  "linesOfCode" : 31,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private boolean setOverlayVisibility()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 328,
  "endLine" : 359,
  "linesOfCode" : 31,
  "mcCabeIndex" : 8,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onConnect()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/src/main/kotlin/com/uber/rib/flipper/RibTreePlugin.kt",
  "fileLinesCount" : 136,
  "components" : [ "primary::android" ],
  "startLine" : 74,
  "endLine" : 104,
  "linesOfCode" : 31,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun detachChild()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 155,
  "endLine" : 186,
  "linesOfCode" : 30,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_workflowDidFork()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Workflow/WorkflowTests.swift",
  "fileLinesCount" : 211,
  "components" : [ "primary::ios" ],
  "startLine" : 127,
  "endLine" : 156,
  "linesOfCode" : 28,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_fork_verifySingleInvocationAtRoot()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Workflow/WorkflowTests.swift",
  "fileLinesCount" : 211,
  "components" : [ "primary::ios" ],
  "startLine" : 158,
  "endLine" : 188,
  "linesOfCode" : 25,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameInteractor.java",
  "fileLinesCount" : 93,
  "components" : [ "primary::android" ],
  "startLine" : 51,
  "endLine" : 77,
  "linesOfCode" : 25,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static List gameProviders()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 201,
  "components" : [ "primary::android" ],
  "startLine" : 129,
  "endLine" : 156,
  "linesOfCode" : 25,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameInteractor.java",
  "fileLinesCount" : 90,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 74,
  "linesOfCode" : 25,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized void buildTreeRecursive()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 218,
  "endLine" : 241,
  "linesOfCode" : 24,
  "mcCabeIndex" : 10,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized RibHierarchyPayload buildRibHierarchyPayload()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 166,
  "endLine" : 188,
  "linesOfCode" : 23,
  "mcCabeIndex" : 8,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onFinishInflate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 51,
  "endLine" : 73,
  "linesOfCode" : 23,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onFinishInflate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 51,
  "endLine" : 73,
  "linesOfCode" : 23,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onFinishInflate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 51,
  "endLine" : 73,
  "linesOfCode" : 23,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onFinishInflate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 51,
  "endLine" : 73,
  "linesOfCode" : 23,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_workflowReceivesError()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Workflow/WorkflowTests.swift",
  "fileLinesCount" : 211,
  "components" : [ "primary::ios" ],
  "startLine" : 80,
  "endLine" : 103,
  "linesOfCode" : 22,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void handle()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 97,
  "endLine" : 118,
  "linesOfCode" : 22,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun updateText()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyRootNodeDescriptor.kt",
  "fileLinesCount" : 98,
  "components" : [ "primary::android" ],
  "startLine" : 56,
  "endLine" : 79,
  "linesOfCode" : 22,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized void removeChild()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 304,
  "endLine" : 326,
  "linesOfCode" : 21,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private void setTouchOverlayVisibility()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 430,
  "endLine" : 450,
  "linesOfCode" : 21,
  "mcCabeIndex" : 8,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun configureTree()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 140,
  "endLine" : 173,
  "linesOfCode" : 21,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void onReceive()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastReceiver.java",
  "fileLinesCount" : 96,
  "components" : [ "primary::android" ],
  "startLine" : 50,
  "endLine" : 71,
  "linesOfCode" : 21,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun dispatchDetach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Interactor.kt",
  "fileLinesCount" : 219,
  "components" : [ "primary::android" ],
  "startLine" : 133,
  "endLine" : 156,
  "linesOfCode" : 21,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 55,
  "endLine" : 74,
  "linesOfCode" : 20,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 55,
  "endLine" : 74,
  "linesOfCode" : 20,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 55,
  "endLine" : 74,
  "linesOfCode" : 20,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_load_verifyLifecycleObservable()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/RouterTests.swift",
  "fileLinesCount" : 67,
  "components" : [ "primary::ios" ],
  "startLine" : 42,
  "endLine" : 66,
  "linesOfCode" : 20,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun generate()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-test/src/main/kotlin/com/uber/rib/compiler/InteractorTestGenerator.kt",
  "fileLinesCount" : 93,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 60,
  "linesOfCode" : 20,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun dispatchAttach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Interactor.kt",
  "fileLinesCount" : 219,
  "components" : [ "primary::android" ],
  "startLine" : 110,
  "endLine" : 131,
  "linesOfCode" : 20,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Observable startGameRequest()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 80,
  "endLine" : 99,
  "linesOfCode" : 20,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_workflowDidComplete()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Workflow/WorkflowTests.swift",
  "fileLinesCount" : 211,
  "components" : [ "primary::ios" ],
  "startLine" : 105,
  "endLine" : 125,
  "linesOfCode" : 19,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized Activity getActivityRecursive()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 377,
  "endLine" : 395,
  "linesOfCode" : 19,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private boolean isAvailable()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateAction.java",
  "fileLinesCount" : 217,
  "components" : [ "primary::android" ],
  "startLine" : 178,
  "endLine" : 199,
  "linesOfCode" : 19,
  "mcCabeIndex" : 7,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Observable squareClicks()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 76,
  "endLine" : 94,
  "linesOfCode" : 19,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Observable squareClicks()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 76,
  "endLine" : 94,
  "linesOfCode" : 19,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Observable squareClicks()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 76,
  "endLine" : 94,
  "linesOfCode" : 19,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Observable squareClicks()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 76,
  "endLine" : 94,
  "linesOfCode" : 19,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func replaceModal()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 87,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 66,
  "linesOfCode" : 18,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func replaceModal()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 87,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 66,
  "linesOfCode" : 18,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized void addChild()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 282,
  "endLine" : 302,
  "linesOfCode" : 18,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public static GeneratorPair getGeneratorsForRibWithPresenterAndView()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/Generators.java",
  "fileLinesCount" : 86,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 62,
  "linesOfCode" : 18,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun updateText()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibViewNodeDescriptor.kt",
  "fileLinesCount" : 93,
  "components" : [ "primary::android" ],
  "startLine" : 44,
  "endLine" : 63,
  "linesOfCode" : 18,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private static void writeResponse()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastRequest.java",
  "fileLinesCount" : 153,
  "components" : [ "primary::android" ],
  "startLine" : 135,
  "endLine" : 152,
  "linesOfCode" : 18,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "export function getHostForNodeRecursive()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/desktop/src/utils.js",
  "fileLinesCount" : 28,
  "components" : [ "primary::android" ],
  "startLine" : 10,
  "endLine" : 27,
  "linesOfCode" : 18,
  "mcCabeIndex" : 7,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func placeCurrentPlayerMark()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 182,
  "components" : [ "primary::ios" ],
  "startLine" : 60,
  "endLine" : 79,
  "linesOfCode" : 17,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func placeCurrentPlayerMark()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 182,
  "components" : [ "primary::ios" ],
  "startLine" : 60,
  "endLine" : 79,
  "linesOfCode" : 17,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_start_stop_lifecycle()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Worker/WorkerTests.swift",
  "fileLinesCount" : 128,
  "components" : [ "primary::ios" ],
  "startLine" : 87,
  "endLine" : 107,
  "linesOfCode" : 17,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_componentForCurrentPass_builderReturnsSameInstance_verifyAssertion()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/MultiStageComponentizedBuilderTests.swift",
  "fileLinesCount" : 88,
  "components" : [ "primary::ios" ],
  "startLine" : 55,
  "endLine" : 74,
  "linesOfCode" : 17,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun executeWithLineOutput()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/CommandLineUtils.kt",
  "fileLinesCount" : 108,
  "components" : [ "primary::android" ],
  "startLine" : 56,
  "endLine" : 74,
  "linesOfCode" : 17,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun verify()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-app/src/main/kotlin/com/uber/rib/compiler/InteractorAnnotationVerifier.kt",
  "fileLinesCount" : 133,
  "components" : [ "primary::android" ],
  "startLine" : 44,
  "endLine" : 60,
  "linesOfCode" : 17,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 131,
  "components" : [ "primary::ios" ],
  "startLine" : 53,
  "endLine" : 68,
  "linesOfCode" : 16,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/RandomWin/RandomWinViewController.swift",
  "fileLinesCount" : 93,
  "components" : [ "primary::ios" ],
  "startLine" : 51,
  "endLine" : 66,
  "linesOfCode" : 16,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 139,
  "components" : [ "primary::ios" ],
  "startLine" : 61,
  "endLine" : 76,
  "linesOfCode" : 16,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/RandomWin/RandomWinViewController.swift",
  "fileLinesCount" : 93,
  "components" : [ "primary::ios" ],
  "startLine" : 51,
  "endLine" : 66,
  "linesOfCode" : 16,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized RibView buildRibViewRecursive()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 190,
  "endLine" : 207,
  "linesOfCode" : 16,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getIcon()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyRootNodeDescriptor.kt",
  "fileLinesCount" : 98,
  "components" : [ "primary::android" ],
  "startLine" : 81,
  "endLine" : 97,
  "linesOfCode" : 16,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun createHierarchyTreeStructure()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 170,
  "endLine" : 185,
  "linesOfCode" : 16,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun refreshRibHierarchy()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 81,
  "endLine" : 120,
  "linesOfCode" : 16,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private boolean isAppInForeground()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastReceiver.java",
  "fileLinesCount" : 96,
  "components" : [ "primary::android" ],
  "startLine" : 73,
  "endLine" : 88,
  "linesOfCode" : 16,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun asObservable()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-workflow/src/main/kotlin/com/uber/rib/workflow/core/Step.kt",
  "fileLinesCount" : 158,
  "components" : [ "primary::android" ],
  "startLine" : 72,
  "endLine" : 87,
  "linesOfCode" : 16,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "boolean hasWon()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/Board.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 67,
  "linesOfCode" : 16,
  "mcCabeIndex" : 14,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "boolean hasWon()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/Board.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 67,
  "linesOfCode" : 16,
  "mcCabeIndex" : 14,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "boolean hasWon()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/Board.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 67,
  "linesOfCode" : 16,
  "mcCabeIndex" : 14,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "boolean hasWon()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/Board.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 67,
  "linesOfCode" : 16,
  "mcCabeIndex" : 14,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private static SourceFolder suitableTestSourceFolders()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateAction.java",
  "fileLinesCount" : 217,
  "components" : [ "primary::android" ],
  "startLine" : 58,
  "endLine" : 73,
  "linesOfCode" : 15,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public static GeneratorPair getGeneratorsForRibWithoutPresenterAndView()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/Generators.java",
  "fileLinesCount" : 86,
  "components" : [ "primary::android" ],
  "startLine" : 69,
  "endLine" : 85,
  "linesOfCode" : 15,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun findRibNodeRecursive()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 109,
  "endLine" : 123,
  "linesOfCode" : 15,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun findRibViewRecursive()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 127,
  "endLine" : 141,
  "linesOfCode" : 15,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun processNewLines()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/io/LogcatRequestProcessor.kt",
  "fileLinesCount" : 154,
  "components" : [ "primary::android" ],
  "startLine" : 121,
  "endLine" : 135,
  "linesOfCode" : 15,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun  onStep()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-workflow/src/main/kotlin/com/uber/rib/workflow/core/Step.kt",
  "fileLinesCount" : 158,
  "components" : [ "primary::android" ],
  "startLine" : 50,
  "endLine" : 64,
  "linesOfCode" : 15,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun process()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-app/src/main/kotlin/com/uber/rib/compiler/RibProcessor.kt",
  "fileLinesCount" : 77,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 66,
  "linesOfCode" : 15,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun dispatchAttach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 196,
  "endLine" : 210,
  "linesOfCode" : 15,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun bind()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 66,
  "endLine" : 89,
  "linesOfCode" : 15,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun bind()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 118,
  "endLine" : 141,
  "linesOfCode" : 15,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutInteractor.java",
  "fileLinesCount" : 68,
  "components" : [ "primary::android" ],
  "startLine" : 38,
  "endLine" : 52,
  "linesOfCode" : 15,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getIcon()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibViewNodeDescriptor.kt",
  "fileLinesCount" : 93,
  "components" : [ "primary::android" ],
  "startLine" : 75,
  "endLine" : 88,
  "linesOfCode" : 14,
  "mcCabeIndex" : 7,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun updateText()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibViewRootNodeDescriptor.kt",
  "fileLinesCount" : 56,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 55,
  "linesOfCode" : 14,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun configureTree()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 187,
  "endLine" : 200,
  "linesOfCode" : 14,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun peekRouter()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigator.kt",
  "fileLinesCount" : 299,
  "components" : [ "primary::android" ],
  "startLine" : 197,
  "endLine" : 247,
  "linesOfCode" : 14,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onBackPressed()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 179,
  "endLine" : 194,
  "linesOfCode" : 14,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun create()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/lifecycle/ActivityLifecycleEvent.kt",
  "fileLinesCount" : 117,
  "components" : [ "primary::android" ],
  "startLine" : 102,
  "endLine" : 115,
  "linesOfCode" : 14,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun apply()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/XRay.kt",
  "fileLinesCount" : 117,
  "components" : [ "primary::android" ],
  "startLine" : 77,
  "endLine" : 90,
  "linesOfCode" : 14,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutInteractor.java",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 50,
  "linesOfCode" : 14,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutInteractor.java",
  "fileLinesCount" : 66,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 50,
  "linesOfCode" : 14,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func setCell()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 139,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 59,
  "linesOfCode" : 13,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func placeCurrentPlayerMark()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 151,
  "components" : [ "primary::ios" ],
  "startLine" : 60,
  "endLine" : 74,
  "linesOfCode" : 13,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 70,
  "components" : [ "primary::ios" ],
  "startLine" : 56,
  "endLine" : 69,
  "linesOfCode" : 13,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 62,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 61,
  "linesOfCode" : 13,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_removeElementByReference()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Extensions/Foundation+ExtensionsTests.swift",
  "fileLinesCount" : 41,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 40,
  "linesOfCode" : 13,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_componentForCurrentPass_builderReturnsSameInstance_verifyAssertion()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/ComponentizedBuilderTests.swift",
  "fileLinesCount" : 63,
  "components" : [ "primary::ios" ],
  "startLine" : 22,
  "endLine" : 36,
  "linesOfCode" : 13,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private Activity getActivity()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 362,
  "endLine" : 374,
  "linesOfCode" : 13,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private static String getCurrentProcessName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 397,
  "endLine" : 409,
  "linesOfCode" : 13,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun notifySelectedViewChanged()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 176,
  "endLine" : 188,
  "linesOfCode" : 13,
  "mcCabeIndex" : 6,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun doRefresh()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 202,
  "endLine" : 214,
  "linesOfCode" : 13,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun detachAll()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/StackRouterNavigator.kt",
  "fileLinesCount" : 419,
  "components" : [ "primary::android" ],
  "startLine" : 197,
  "endLine" : 209,
  "linesOfCode" : 13,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun peekState()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigator.kt",
  "fileLinesCount" : 299,
  "components" : [ "primary::android" ],
  "startLine" : 204,
  "endLine" : 247,
  "linesOfCode" : 13,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onCreate()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 89,
  "endLine" : 101,
  "linesOfCode" : 13,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun setConfiguration()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Rib.kt",
  "fileLinesCount" : 102,
  "components" : [ "primary::android" ],
  "startLine" : 80,
  "endLine" : 92,
  "linesOfCode" : 13,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private void handleDeepLink()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/RootActivity.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 55,
  "endLine" : 68,
  "linesOfCode" : 13,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func confineTo()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Interactor.swift",
  "fileLinesCount" : 207,
  "components" : [ "primary::ios" ],
  "startLine" : 166,
  "endLine" : 177,
  "linesOfCode" : 12,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 60,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 59,
  "linesOfCode" : 12,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 60,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 59,
  "linesOfCode" : 12,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func updateScore()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Models/ScoreStream.swift",
  "fileLinesCount" : 63,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 58,
  "linesOfCode" : 12,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 60,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 59,
  "linesOfCode" : 12,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 78,
  "components" : [ "primary::ios" ],
  "startLine" : 65,
  "endLine" : 77,
  "linesOfCode" : 12,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private View getView()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 269,
  "endLine" : 280,
  "linesOfCode" : 12,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public boolean onTouchEvent()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 495,
  "endLine" : 506,
  "linesOfCode" : 12,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun visit()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/HierarchyBrowserBase.kt",
  "fileLinesCount" : 99,
  "components" : [ "primary::android" ],
  "startLine" : 84,
  "endLine" : 95,
  "linesOfCode" : 12,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun packageNameOf()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-app/src/main/kotlin/com/uber/rib/compiler/CompilerUtils.kt",
  "fileLinesCount" : 42,
  "components" : [ "primary::android" ],
  "startLine" : 29,
  "endLine" : 40,
  "linesOfCode" : 12,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected open fun saveInstanceState()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 238,
  "endLine" : 249,
  "linesOfCode" : 12,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameInteractor.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 47,
  "linesOfCode" : 12,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void addVictory()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/MutableScoreStream.java",
  "fileLinesCount" : 51,
  "components" : [ "primary::android" ],
  "startLine" : 32,
  "endLine" : 45,
  "linesOfCode" : 12,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedout/LoggedOutInteractor.java",
  "fileLinesCount" : 53,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 47,
  "linesOfCode" : 12,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameInteractor.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 47,
  "linesOfCode" : 12,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void addVictory()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/MutableScoreStream.java",
  "fileLinesCount" : 50,
  "components" : [ "primary::android" ],
  "startLine" : 31,
  "endLine" : 44,
  "linesOfCode" : 12,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func placeCurrentPlayerMark()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 153,
  "components" : [ "primary::ios" ],
  "startLine" : 60,
  "endLine" : 72,
  "linesOfCode" : 11,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 54,
  "components" : [ "primary::ios" ],
  "startLine" : 42,
  "endLine" : 53,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/OffGame/OffGameBuilder.swift",
  "fileLinesCount" : 64,
  "components" : [ "primary::ios" ],
  "startLine" : 52,
  "endLine" : 63,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 77,
  "components" : [ "primary::ios" ],
  "startLine" : 65,
  "endLine" : 76,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func placeCurrentPlayerMark()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 158,
  "components" : [ "primary::ios" ],
  "startLine" : 60,
  "endLine" : 72,
  "linesOfCode" : 11,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/OffGame/OffGameBuilder.swift",
  "fileLinesCount" : 64,
  "components" : [ "primary::ios" ],
  "startLine" : 52,
  "endLine" : 63,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun displayPopup()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 168,
  "endLine" : 178,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun actionPerformed()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 262,
  "endLine" : 273,
  "linesOfCode" : 11,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun enableLocateMode()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 136,
  "endLine" : 177,
  "linesOfCode" : 11,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onSuccess()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 154,
  "endLine" : 164,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun selectDevice()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 179,
  "endLine" : 191,
  "linesOfCode" : 11,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun willDetachFromHost()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterAndState.kt",
  "fileLinesCount" : 152,
  "components" : [ "primary::android" ],
  "startLine" : 83,
  "endLine" : 98,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 4,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun hostWillDetach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigator.kt",
  "fileLinesCount" : 299,
  "components" : [ "primary::android" ],
  "startLine" : 217,
  "endLine" : 247,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun buildRouter()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigator.kt",
  "fileLinesCount" : 299,
  "components" : [ "primary::android" ],
  "startLine" : 230,
  "endLine" : 257,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun bindToWorkerLifecycle()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 241,
  "endLine" : 251,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 56,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 114,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 56,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 56,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 57,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 56,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 127,
  "components" : [ "primary::android" ],
  "startLine" : 51,
  "endLine" : 61,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RandomWinnerRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/randomWinner/RandomWinnerBuilder.java",
  "fileLinesCount" : 122,
  "components" : [ "primary::android" ],
  "startLine" : 50,
  "endLine" : 60,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 121,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 58,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedInRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 201,
  "components" : [ "primary::android" ],
  "startLine" : 54,
  "endLine" : 65,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 57,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 56,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Observable loginName()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 55,
  "components" : [ "primary::android" ],
  "startLine" : 44,
  "endLine" : 54,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 114,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 56,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 56,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 108,
  "components" : [ "primary::android" ],
  "startLine" : 45,
  "endLine" : 55,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial1/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 104,
  "components" : [ "primary::android" ],
  "startLine" : 44,
  "endLine" : 54,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 56,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 58,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 121,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 57,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedInRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 149,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 58,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 57,
  "linesOfCode" : 11,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 58,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 57,
  "linesOfCode" : 10,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToLoggedIn()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 46,
  "endLine" : 57,
  "linesOfCode" : 10,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_componentForCurrentPass_builderReturnsNewInstance_verifyNoAssertion()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/ComponentizedBuilderTests.swift",
  "fileLinesCount" : 63,
  "components" : [ "primary::ios" ],
  "startLine" : 38,
  "endLine" : 49,
  "linesOfCode" : 10,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_componentForCurrentPass_multiplePasses_verifyDifferentInstances()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/MultiStageComponentizedBuilderTests.swift",
  "fileLinesCount" : 88,
  "components" : [ "primary::ios" ],
  "startLine" : 40,
  "endLine" : 53,
  "linesOfCode" : 10,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static boolean viewIncludesTarget()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyUtils.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 49,
  "endLine" : 58,
  "linesOfCode" : 10,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private static  UUID computeUuidIfAbsent()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 419,
  "endLine" : 428,
  "linesOfCode" : 10,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private static void createSourceFile()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateAction.java",
  "fileLinesCount" : 217,
  "components" : [ "primary::android" ],
  "startLine" : 82,
  "endLine" : 91,
  "linesOfCode" : 10,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void onGenerateClicked()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateRibAction.java",
  "fileLinesCount" : 43,
  "components" : [ "primary::android" ],
  "startLine" : 33,
  "endLine" : 42,
  "linesOfCode" : 10,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun update()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyDescriptor.kt",
  "fileLinesCount" : 78,
  "components" : [ "primary::android" ],
  "startLine" : 45,
  "endLine" : 57,
  "linesOfCode" : 10,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun configureTree()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/HierarchyBrowserBase.kt",
  "fileLinesCount" : 99,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 69,
  "linesOfCode" : 10,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun onMessagePartReceived()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/io/LogcatMessageDecoder.kt",
  "fileLinesCount" : 79,
  "components" : [ "primary::android" ],
  "startLine" : 69,
  "endLine" : 78,
  "linesOfCode" : 10,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun mapInteractorLifecycleToWorker()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 183,
  "endLine" : 192,
  "linesOfCode" : 10,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun mapPresenterLifecycleToWorker()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 195,
  "endLine" : 204,
  "linesOfCode" : 10,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "boolean isDraw()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/Board.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 49,
  "linesOfCode" : 10,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "boolean isDraw()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/Board.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 49,
  "linesOfCode" : 10,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "boolean isDraw()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/Board.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 49,
  "linesOfCode" : 10,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "boolean isDraw()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/Board.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 49,
  "linesOfCode" : 10,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func disposeOnDeactivate()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Interactor.swift",
  "fileLinesCount" : 207,
  "components" : [ "primary::ios" ],
  "startLine" : 198,
  "endLine" : 206,
  "linesOfCode" : 9,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func disposeOnStop()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Worker/Worker.swift",
  "fileLinesCount" : 217,
  "components" : [ "primary::ios" ],
  "startLine" : 191,
  "endLine" : 199,
  "linesOfCode" : 9,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToLoggedIn()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 57,
  "linesOfCode" : 9,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func show()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 94,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 55,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeBuilder.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 52,
  "endLine" : 60,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToLoggedIn()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 71,
  "components" : [ "primary::ios" ],
  "startLine" : 46,
  "endLine" : 56,
  "linesOfCode" : 9,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial1/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 51,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 50,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/OffGame/OffGameBuilder.swift",
  "fileLinesCount" : 59,
  "components" : [ "primary::ios" ],
  "startLine" : 50,
  "endLine" : 58,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToLoggedIn()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 57,
  "linesOfCode" : 9,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func show()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 94,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 55,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeBuilder.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 52,
  "endLine" : 60,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func launchGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 85,
  "components" : [ "primary::ios" ],
  "startLine" : 69,
  "endLine" : 79,
  "linesOfCode" : 9,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private boolean checkPackageExists()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateAction.java",
  "fileLinesCount" : 217,
  "components" : [ "primary::android" ],
  "startLine" : 207,
  "endLine" : 216,
  "linesOfCode" : 9,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun appendActions()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 156,
  "endLine" : 168,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected DebugBroadcastRequest()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastRequest.java",
  "fileLinesCount" : 153,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 48,
  "linesOfCode" : 9,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun toFlipperPayload()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/src/main/kotlin/com/uber/rib/flipper/RibEventPayload.kt",
  "fileLinesCount" : 99,
  "components" : [ "primary::android" ],
  "startLine" : 89,
  "endLine" : 97,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun willAttachToHost()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigator.kt",
  "fileLinesCount" : 299,
  "components" : [ "primary::android" ],
  "startLine" : 241,
  "endLine" : 257,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 4,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onDestroy()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 148,
  "endLine" : 156,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun create()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/lifecycle/ActivityCallbackEvent.kt",
  "fileLinesCount" : 155,
  "components" : [ "primary::android" ],
  "startLine" : 96,
  "endLine" : 104,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun draw()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibDebugOverlay.kt",
  "fileLinesCount" : 52,
  "components" : [ "primary::android" ],
  "startLine" : 32,
  "endLine" : 40,
  "linesOfCode" : 9,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun  assertStepNotYetEmitted()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-workflow-test/src/main/kotlin/com/uber/rib/workflow/core/StepTester.kt",
  "fileLinesCount" : 88,
  "components" : [ "primary::android" ],
  "startLine" : 61,
  "endLine" : 69,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun  assertStepEmitted()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-workflow-test/src/main/kotlin/com/uber/rib/workflow/core/StepTester.kt",
  "fileLinesCount" : 88,
  "components" : [ "primary::android" ],
  "startLine" : 79,
  "endLine" : 87,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun logBreadcrumb()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 58,
  "endLine" : 66,
  "linesOfCode" : 9,
  "mcCabeIndex" : 5,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedInRouter build()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 120,
  "components" : [ "primary::android" ],
  "startLine" : 44,
  "endLine" : 53,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static LoggedInRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 120,
  "components" : [ "primary::android" ],
  "startLine" : 71,
  "endLine" : 79,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static LoggedInRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 201,
  "components" : [ "primary::android" ],
  "startLine" : 83,
  "endLine" : 91,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static LoggedInRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 149,
  "components" : [ "primary::android" ],
  "startLine" : 76,
  "endLine" : 84,
  "linesOfCode" : 9,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func determineWinner()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/RandomWin/RandomWinInteractor.swift",
  "fileLinesCount" : 70,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 65,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeBuilder.swift",
  "fileLinesCount" : 56,
  "components" : [ "primary::ios" ],
  "startLine" : 48,
  "endLine" : 55,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func determineWinner()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/RandomWin/RandomWinInteractor.swift",
  "fileLinesCount" : 70,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 65,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized RibView buildRibView()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 209,
  "endLine" : 216,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized Router getRouterFromId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 249,
  "endLine" : 256,
  "linesOfCode" : 8,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized View getViewFromId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 259,
  "endLine" : 266,
  "linesOfCode" : 8,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected final String getPackageName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateAction.java",
  "fileLinesCount" : 217,
  "components" : [ "primary::android" ],
  "startLine" : 156,
  "endLine" : 165,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun createHierarchyTreeStructure()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 131,
  "endLine" : 138,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun deviceConnected()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/AndroidDeviceRepository.kt",
  "fileLinesCount" : 96,
  "components" : [ "primary::android" ],
  "startLine" : 44,
  "endLine" : 51,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun deviceDisconnected()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/AndroidDeviceRepository.kt",
  "fileLinesCount" : 96,
  "components" : [ "primary::android" ],
  "startLine" : 53,
  "endLine" : 60,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun attach()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 72,
  "endLine" : 79,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onAvailableDevicesChanged()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 197,
  "endLine" : 206,
  "linesOfCode" : 8,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public static void initWithDefaults()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastReceiver.java",
  "fileLinesCount" : 96,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 47,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun willDetachFromHost()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterAndState.kt",
  "fileLinesCount" : 152,
  "components" : [ "primary::android" ],
  "startLine" : 100,
  "endLine" : 107,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 4,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onPictureInPictureModeChanged()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 170,
  "endLine" : 177,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onCreate()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/CoreAppCompatActivity.kt",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 33,
  "endLine" : 40,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onRequestPermissionsResult()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/CoreAppCompatActivity.kt",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 74,
  "endLine" : 81,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected fun generateSource()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-app/src/main/kotlin/com/uber/rib/compiler/RibInteractorProcessorPipeline.kt",
  "fileLinesCount" : 85,
  "components" : [ "primary::android" ],
  "startLine" : 49,
  "endLine" : 56,
  "linesOfCode" : 8,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun processAnnotations()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-app/src/main/kotlin/com/uber/rib/compiler/TypeProcessorPipeline.kt",
  "fileLinesCount" : 52,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 42,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun watchDeletedObject()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 49,
  "linesOfCode" : 8,
  "mcCabeIndex" : 4,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun dispatchDetach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 212,
  "endLine" : 220,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun bind()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 100,
  "endLine" : 107,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun bind()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 152,
  "endLine" : 159,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun bind()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 173,
  "endLine" : 180,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun getBundleExtra()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Bundle.kt",
  "fileLinesCount" : 148,
  "components" : [ "primary::android" ],
  "startLine" : 57,
  "endLine" : 64,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onStart()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibCoroutineWorker.kt",
  "fileLinesCount" : 270,
  "components" : [ "primary::android" ],
  "startLine" : 248,
  "endLine" : 263,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onFinishInflate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 59,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static RootRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 83,
  "endLine" : 90,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/randomWinner/RandomWinnerInteractor.java",
  "fileLinesCount" : 63,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 49,
  "linesOfCode" : 8,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void onStartGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInInteractor.java",
  "fileLinesCount" : 72,
  "components" : [ "primary::android" ],
  "startLine" : 50,
  "endLine" : 57,
  "linesOfCode" : 8,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static RootRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 83,
  "endLine" : 90,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onFinishInflate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 53,
  "endLine" : 60,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static RootRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 83,
  "endLine" : 90,
  "linesOfCode" : 8,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tooling/RIB.xctemplate/ownsView/___FILEBASENAME___Builder.swift",
  "fileLinesCount" : 34,
  "components" : [ "primary::ios" ],
  "startLine" : 27,
  "endLine" : 33,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func fork()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Workflow/Workflow.swift",
  "fileLinesCount" : 226,
  "components" : [ "primary::ios" ],
  "startLine" : 188,
  "endLine" : 194,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/OffGame/OffGameBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 47,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 47,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedOut/LoggedOutBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 47,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToTicTacToe()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 55,
  "endLine" : 62,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedOut/LoggedOutBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 47,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 81,
  "components" : [ "primary::ios" ],
  "startLine" : 52,
  "endLine" : 59,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 47,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/LoggedOut/LoggedOutBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 47,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 34,
  "endLine" : 40,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 186,
  "endLine" : 192,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedOut/LoggedOutBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 47,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToTicTacToe()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 55,
  "endLine" : 62,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedOut/LoggedOutBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 47,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 81,
  "components" : [ "primary::ios" ],
  "startLine" : 52,
  "endLine" : 59,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_shared()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/DI/ComponentTests.swift",
  "fileLinesCount" : 67,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 32,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_componentForCurrentPass_samePass_verifySameInstance()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/MultiStageComponentizedBuilderTests.swift",
  "fileLinesCount" : 88,
  "components" : [ "primary::ios" ],
  "startLine" : 32,
  "endLine" : 38,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static String getFriendlyResourceId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyUtils.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 33,
  "endLine" : 39,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibView()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 115,
  "endLine" : 121,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 4,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public GenerateRibDialog()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateRibDialog.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 42,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void doOKAction()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateRibDialog.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 51,
  "endLine" : 58,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public final void update()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateAction.java",
  "fileLinesCount" : 217,
  "components" : [ "primary::android" ],
  "startLine" : 94,
  "endLine" : 102,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun doRefresh()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/HierarchyBrowserBase.kt",
  "fileLinesCount" : 99,
  "components" : [ "primary::android" ],
  "startLine" : 44,
  "endLine" : 50,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun selectById()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/HierarchyBrowserBase.kt",
  "fileLinesCount" : 99,
  "components" : [ "primary::android" ],
  "startLine" : 80,
  "endLine" : 98,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun buildRootElement()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 75,
  "endLine" : 81,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun getTagValueSuffix()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 144,
  "endLine" : 150,
  "linesOfCode" : 7,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun processNewLines()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/io/LogcatRequestProcessor.kt",
  "fileLinesCount" : 154,
  "components" : [ "primary::android" ],
  "startLine" : 142,
  "endLine" : 148,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "export function getHostForNode()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/desktop/src/utils.js",
  "fileLinesCount" : 28,
  "components" : [ "primary::android" ],
  "startLine" : 2,
  "endLine" : 8,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun toFlipperPayload()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/src/main/kotlin/com/uber/rib/flipper/RibEventPayload.kt",
  "fileLinesCount" : 99,
  "components" : [ "primary::android" ],
  "startLine" : 49,
  "endLine" : 55,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun assertNoMoreEvents()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/AndroidRecordingRx2Observer.kt",
  "fileLinesCount" : 89,
  "components" : [ "primary::android" ],
  "startLine" : 69,
  "endLine" : 76,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun stateName()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigatorState.kt",
  "fileLinesCount" : 42,
  "components" : [ "primary::android" ],
  "startLine" : 22,
  "endLine" : 28,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun lifecycle()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RxActivityEvents.kt",
  "fileLinesCount" : 51,
  "components" : [ "primary::android" ],
  "startLine" : 25,
  "endLine" : 39,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun createOnActivityResultEvent()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/lifecycle/ActivityCallbackEvent.kt",
  "fileLinesCount" : 155,
  "components" : [ "primary::android" ],
  "startLine" : 81,
  "endLine" : 87,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun init()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-app/src/main/kotlin/com/uber/rib/compiler/RibProcessor.kt",
  "fileLinesCount" : 77,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 46,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun setValue()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Interactor.kt",
  "fileLinesCount" : 219,
  "components" : [ "primary::android" ],
  "startLine" : 199,
  "endLine" : 205,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun getMainThread()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 265,
  "endLine" : 271,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun putBundleExtra()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Bundle.kt",
  "fileLinesCount" : 148,
  "components" : [ "primary::android" ],
  "startLine" : 73,
  "endLine" : 79,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private void updateCurrentPlayer()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeInteractor.java",
  "fileLinesCount" : 103,
  "components" : [ "primary::android" ],
  "startLine" : 79,
  "endLine" : 85,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void detachOffGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 65,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void detachTicTacToe()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 73,
  "endLine" : 79,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void detachLoggedOut()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 54,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onFinishInflate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 57,
  "endLine" : 63,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private void updateCurrentPlayer()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeInteractor.java",
  "fileLinesCount" : 122,
  "components" : [ "primary::android" ],
  "startLine" : 90,
  "endLine" : 96,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void detachOffGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 65,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void detachGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 73,
  "endLine" : 79,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void gameWon()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInInteractor.java",
  "fileLinesCount" : 72,
  "components" : [ "primary::android" ],
  "startLine" : 63,
  "endLine" : 70,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void detachLoggedOut()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 55,
  "endLine" : 61,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "LoggedInActionableItem attachLoggedIn()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 63,
  "endLine" : 70,
  "linesOfCode" : 7,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private void updateCurrentPlayer()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeInteractor.java",
  "fileLinesCount" : 103,
  "components" : [ "primary::android" ],
  "startLine" : 79,
  "endLine" : 85,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private void updateCurrentPlayer()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeInteractor.java",
  "fileLinesCount" : 121,
  "components" : [ "primary::android" ],
  "startLine" : 89,
  "endLine" : 95,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void detachOffGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 65,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void detachTicTacToe()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 73,
  "endLine" : 79,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void gameWon()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInInteractor.java",
  "fileLinesCount" : 69,
  "components" : [ "primary::android" ],
  "startLine" : 60,
  "endLine" : 67,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void detachLoggedOut()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 54,
  "linesOfCode" : 7,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tooling/RIB.xctemplate/Default/___FILEBASENAME___Builder.swift",
  "fileLinesCount" : 40,
  "components" : [ "primary::ios" ],
  "startLine" : 34,
  "endLine" : 39,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "mutating func removeElementByReference()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Extensions/Foundation+Extensions.swift",
  "fileLinesCount" : 31,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 30,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func activate()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 71,
  "endLine" : 76,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func deactivate()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 78,
  "endLine" : 83,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startTicTacToe()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 85,
  "endLine" : 90,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func gameDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 92,
  "endLine" : 97,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 131,
  "endLine" : 136,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToTicTacToe()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 138,
  "endLine" : 143,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToOffGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 145,
  "endLine" : 150,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func load()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 152,
  "endLine" : 157,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func attachChild()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 159,
  "endLine" : 164,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func detachChild()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 166,
  "endLine" : 171,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func activate()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 221,
  "endLine" : 226,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func deactivate()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 228,
  "endLine" : 233,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didLogin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 235,
  "endLine" : 240,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 260,
  "endLine" : 265,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func dismiss()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 267,
  "endLine" : 272,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func gameDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 75,
  "components" : [ "primary::ios" ],
  "startLine" : 66,
  "endLine" : 71,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didLogin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Root/RootInteractor.swift",
  "fileLinesCount" : 86,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 63,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func handle()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Root/RootInteractor.swift",
  "fileLinesCount" : 86,
  "components" : [ "primary::ios" ],
  "startLine" : 67,
  "endLine" : 72,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func waitForLogin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Root/RootInteractor.swift",
  "fileLinesCount" : 86,
  "components" : [ "primary::ios" ],
  "startLine" : 76,
  "endLine" : 81,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_launchFromWindow()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/LaunchRouterTests.swift",
  "fileLinesCount" : 46,
  "components" : [ "primary::ios" ],
  "startLine" : 39,
  "endLine" : 45,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func activate()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Mocks.swift",
  "fileLinesCount" : 100,
  "components" : [ "primary::ios" ],
  "startLine" : 87,
  "endLine" : 92,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func deactivate()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Mocks.swift",
  "fileLinesCount" : 100,
  "components" : [ "primary::ios" ],
  "startLine" : 94,
  "endLine" : 99,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibHierarchyWithSelectionPayload()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyWithSelectionPayload.java",
  "fileLinesCount" : 30,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 29,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 4,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addActivity()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 52,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibNode()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 79,
  "endLine" : 84,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public final String getFileExtension()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/Generator.java",
  "fileLinesCount" : 204,
  "components" : [ "primary::android" ],
  "startLine" : 129,
  "endLine" : 136,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public final String generate()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/Generator.java",
  "fileLinesCount" : 204,
  "components" : [ "primary::android" ],
  "startLine" : 148,
  "endLine" : 153,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getElementFromDescriptor()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 97,
  "endLine" : 102,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getContentDisplayName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 120,
  "endLine" : 125,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getElementFromDescriptor()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 127,
  "endLine" : 132,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getContentDisplayName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 149,
  "endLine" : 154,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun onModelUpdated()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 217,
  "endLine" : 222,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onRefreshComplete()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 225,
  "endLine" : 230,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onModelUpdated()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyPanel.kt",
  "fileLinesCount" : 186,
  "components" : [ "primary::android" ],
  "startLine" : 134,
  "endLine" : 139,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun addListener()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/AndroidDeviceRepository.kt",
  "fileLinesCount" : 96,
  "components" : [ "primary::android" ],
  "startLine" : 63,
  "endLine" : 68,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onSuccess()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 101,
  "endLine" : 106,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public DebugBroadcastResponse()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastResponse.java",
  "fileLinesCount" : 48,
  "components" : [ "primary::android" ],
  "startLine" : 32,
  "endLine" : 37,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static DebugBroadcastRequest from()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastRequest.java",
  "fileLinesCount" : 153,
  "components" : [ "primary::android" ],
  "startLine" : 50,
  "endLine" : 55,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getStringExtra()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastRequest.java",
  "fileLinesCount" : 153,
  "components" : [ "primary::android" ],
  "startLine" : 82,
  "endLine" : 87,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "getTextOpacity()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/desktop/src/TreeChart.js",
  "fileLinesCount" : 131,
  "components" : [ "primary::android" ],
  "startLine" : 22,
  "endLine" : 27,
  "linesOfCode" : 6,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onDisconnect()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/src/main/kotlin/com/uber/rib/flipper/RibTreePlugin.kt",
  "fileLinesCount" : 136,
  "components" : [ "primary::android" ],
  "startLine" : 106,
  "endLine" : 111,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun willDetachFromHost()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigator.kt",
  "fileLinesCount" : 299,
  "components" : [ "primary::android" ],
  "startLine" : 258,
  "endLine" : 263,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 4,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onSaveInstanceState()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 104,
  "endLine" : 109,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun callbacks()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RxActivityEvents.kt",
  "fileLinesCount" : 51,
  "components" : [ "primary::android" ],
  "startLine" : 28,
  "endLine" : 39,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun onActivityResult()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/ActivityDelegate.kt",
  "fileLinesCount" : 62,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 53,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 4,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun onRequestPermissionsResult()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/ActivityDelegate.kt",
  "fileLinesCount" : 62,
  "components" : [ "primary::android" ],
  "startLine" : 56,
  "endLine" : 61,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected fun parseTypeElements()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-app/src/main/kotlin/com/uber/rib/compiler/RibInteractorProcessorPipeline.kt",
  "fileLinesCount" : 85,
  "components" : [ "primary::android" ],
  "startLine" : 64,
  "endLine" : 69,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun getInstance()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 121,
  "endLine" : 126,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getValue()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Interactor.kt",
  "fileLinesCount" : 219,
  "components" : [ "primary::android" ],
  "startLine" : 192,
  "endLine" : 197,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun bind()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 84,
  "endLine" : 89,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun bind()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 136,
  "endLine" : 141,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun bindTo()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/WorkerBinder.kt",
  "fileLinesCount" : 324,
  "components" : [ "primary::android" ],
  "startLine" : 218,
  "endLine" : 223,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun unbind()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibCoroutineWorker.kt",
  "fileLinesCount" : 270,
  "components" : [ "primary::android" ],
  "startLine" : 86,
  "endLine" : 92,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun getConfiguration()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Rib.kt",
  "fileLinesCount" : 102,
  "components" : [ "primary::android" ],
  "startLine" : 95,
  "endLine" : 100,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Pair apply()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 58,
  "components" : [ "primary::android" ],
  "startLine" : 50,
  "endLine" : 55,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected ViewRouter createRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/RootActivity.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 45,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onCreate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/RootActivity.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 53,
  "linesOfCode" : 6,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootWorkflow getWorkflow()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/WorkflowFactory.java",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 32,
  "linesOfCode" : 6,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onFinishInflate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 57,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setScores()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 72,
  "endLine" : 77,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RandomWinnerRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/randomWinner/RandomWinnerRouter.java",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 27,
  "endLine" : 32,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onFinishInflate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 57,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setScores()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 69,
  "endLine" : 74,
  "linesOfCode" : 6,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tooling/RIB.xctemplate/Default/___FILEBASENAME___Router.swift",
  "fileLinesCount" : 33,
  "components" : [ "primary::ios" ],
  "startLine" : 19,
  "endLine" : 23,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func load()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Router.swift",
  "fileLinesCount" : 227,
  "components" : [ "primary::ios" ],
  "startLine" : 52,
  "endLine" : 76,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func setCell()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 131,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 51,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 131,
  "components" : [ "primary::ios" ],
  "startLine" : 109,
  "endLine" : 113,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 131,
  "components" : [ "primary::ios" ],
  "startLine" : 126,
  "endLine" : 130,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func login()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedOut/LoggedOutInteractor.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 63,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 49,
  "endLine" : 53,
  "linesOfCode" : 5,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 67,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 31,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func dismiss()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 62,
  "components" : [ "primary::ios" ],
  "startLine" : 51,
  "endLine" : 55,
  "linesOfCode" : 5,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func setCell()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 49,
  "endLine" : 53,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 118,
  "endLine" : 122,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 135,
  "endLine" : 139,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func login()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedOut/LoggedOutInteractor.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 63,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 77,
  "components" : [ "primary::ios" ],
  "startLine" : 46,
  "endLine" : 50,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 81,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 45,
  "linesOfCode" : 5,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 71,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 26,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 139,
  "components" : [ "primary::ios" ],
  "startLine" : 117,
  "endLine" : 121,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 139,
  "components" : [ "primary::ios" ],
  "startLine" : 134,
  "endLine" : 138,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func login()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/LoggedOut/LoggedOutInteractor.swift",
  "fileLinesCount" : 71,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 62,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 146,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 35,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func setCell()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 49,
  "endLine" : 53,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 118,
  "endLine" : 122,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 135,
  "endLine" : 139,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func login()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedOut/LoggedOutInteractor.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 63,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 70,
  "components" : [ "primary::ios" ],
  "startLine" : 36,
  "endLine" : 40,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 49,
  "endLine" : 53,
  "linesOfCode" : 5,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 75,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 31,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func dismiss()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 62,
  "components" : [ "primary::ios" ],
  "startLine" : 51,
  "endLine" : 55,
  "linesOfCode" : 5,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func setCell()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 49,
  "endLine" : 53,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 118,
  "endLine" : 122,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 135,
  "endLine" : 139,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func login()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedOut/LoggedOutInteractor.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 63,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 78,
  "components" : [ "primary::ios" ],
  "startLine" : 46,
  "endLine" : 50,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 81,
  "components" : [ "primary::ios" ],
  "startLine" : 41,
  "endLine" : 45,
  "linesOfCode" : 5,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 85,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 26,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibHierarchyDebugBroadcastHandler()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 83,
  "endLine" : 87,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public boolean canHandle()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 90,
  "endLine" : 94,
  "linesOfCode" : 5,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TargetInfo()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 461,
  "endLine" : 465,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public GeneratorPair()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/GeneratorPair.java",
  "fileLinesCount" : 38,
  "components" : [ "primary::android" ],
  "startLine" : 25,
  "endLine" : 29,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun getPsiClass()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 84,
  "endLine" : 88,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun getVirtualFile()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 154,
  "endLine" : 158,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun isProjectLayoutFile()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 161,
  "endLine" : 165,
  "linesOfCode" : 5,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun update()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 250,
  "endLine" : 254,
  "linesOfCode" : 5,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun actionPerformed()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 287,
  "endLine" : 291,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun actionPerformed()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyPanel.kt",
  "fileLinesCount" : 186,
  "components" : [ "primary::android" ],
  "startLine" : 127,
  "endLine" : 131,
  "linesOfCode" : 5,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun removeListener()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/AndroidDeviceRepository.kt",
  "fileLinesCount" : 96,
  "components" : [ "primary::android" ],
  "startLine" : 71,
  "endLine" : 75,
  "linesOfCode" : 5,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun init()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-test/src/main/kotlin/com/uber/rib/compiler/RibTestProcessor.kt",
  "fileLinesCount" : 45,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 34,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getProcessorPipelines()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-test/src/main/kotlin/com/uber/rib/compiler/RibTestProcessor.kt",
  "fileLinesCount" : 45,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 44,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun attach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/FakeInteractor.kt",
  "fileLinesCount" : 29,
  "components" : [ "primary::android" ],
  "startLine" : 20,
  "endLine" : 24,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun starting()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-coroutines-test/src/main/kotlin/com/uber/rib/core/RibCoroutinesRule.kt",
  "fileLinesCount" : 41,
  "components" : [ "primary::android" ],
  "startLine" : 31,
  "endLine" : 35,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun  create()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigatorFactory.kt",
  "fileLinesCount" : 54,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 39,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun  lifecycle()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RxActivityEvents.kt",
  "fileLinesCount" : 51,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 39,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun  callbacks()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RxActivityEvents.kt",
  "fileLinesCount" : 51,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 50,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onDestroy()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/CoreAppCompatActivity.kt",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 67,
  "endLine" : 71,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun  exposeObservable()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-workflow-test/src/main/kotlin/com/uber/rib/workflow/core/StepTester.kt",
  "fileLinesCount" : 88,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 38,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun setRouterInternal()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Interactor.kt",
  "fileLinesCount" : 219,
  "components" : [ "primary::android" ],
  "startLine" : 159,
  "endLine" : 163,
  "linesOfCode" : 5,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun dispatchLoad()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Presenter.kt",
  "fileLinesCount" : 83,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 56,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun dispatchUnload()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Presenter.kt",
  "fileLinesCount" : 83,
  "components" : [ "primary::android" ],
  "startLine" : 58,
  "endLine" : 62,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override suspend fun onStart()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibCoroutineWorker.kt",
  "fileLinesCount" : 270,
  "components" : [ "primary::android" ],
  "startLine" : 233,
  "endLine" : 237,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun handleNonFatalError()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Rib.kt",
  "fileLinesCount" : 102,
  "components" : [ "primary::android" ],
  "startLine" : 33,
  "endLine" : 61,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addCross()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 97,
  "endLine" : 101,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addNought()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 104,
  "endLine" : 108,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void willDetach()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 51,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachOffGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 53,
  "endLine" : 57,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachTicTacToe()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 67,
  "endLine" : 71,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachLoggedOut()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 46,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addCross()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 97,
  "endLine" : 101,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addNought()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 104,
  "endLine" : 108,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void willDetach()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 51,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachOffGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 53,
  "endLine" : 57,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 67,
  "endLine" : 71,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachLoggedOut()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 49,
  "endLine" : 53,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addCross()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 97,
  "endLine" : 101,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addNought()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 104,
  "endLine" : 108,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachLoggedOut()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 48,
  "components" : [ "primary::android" ],
  "startLine" : 39,
  "endLine" : 43,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addCross()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 97,
  "endLine" : 101,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addNought()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 104,
  "endLine" : 108,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void willDetach()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 51,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachOffGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 53,
  "endLine" : 57,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachTicTacToe()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInRouter.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 67,
  "endLine" : 71,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachLoggedOut()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 46,
  "linesOfCode" : 5,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func activate()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Interactor.swift",
  "fileLinesCount" : 207,
  "components" : [ "primary::ios" ],
  "startLine" : 51,
  "endLine" : 67,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func reset()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/LeakDetector/LeakDetector.swift",
  "fileLinesCount" : 194,
  "components" : [ "primary::ios" ],
  "startLine" : 155,
  "endLine" : 158,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cancel()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/LeakDetector/LeakDetector.swift",
  "fileLinesCount" : 194,
  "components" : [ "primary::ios" ],
  "startLine" : 190,
  "endLine" : 193,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func attachChild()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Router.swift",
  "fileLinesCount" : 227,
  "components" : [ "primary::ios" ],
  "startLine" : 60,
  "endLine" : 76,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func internalDidLoad()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Router.swift",
  "fileLinesCount" : 227,
  "components" : [ "primary::ios" ],
  "startLine" : 157,
  "endLine" : 160,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func placeCurrentPlayerMark()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 131,
  "components" : [ "primary::ios" ],
  "startLine" : 22,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func setCell()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 153,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 30,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 29,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToOffGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 64,
  "endLine" : 67,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToTicTacToe()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 67,
  "components" : [ "primary::ios" ],
  "startLine" : 27,
  "endLine" : 31,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 29,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 94,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 34,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func setCell()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 182,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 30,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToOffGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 81,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 50,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/TicTacToeAdapter.swift",
  "fileLinesCount" : 41,
  "components" : [ "primary::ios" ],
  "startLine" : 33,
  "endLine" : 36,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToOffGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 71,
  "components" : [ "primary::ios" ],
  "startLine" : 22,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 71,
  "components" : [ "primary::ios" ],
  "startLine" : 37,
  "endLine" : 40,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/RandomWinAdapter.swift",
  "fileLinesCount" : 43,
  "components" : [ "primary::ios" ],
  "startLine" : 35,
  "endLine" : 38,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func placeCurrentPlayerMark()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 139,
  "components" : [ "primary::ios" ],
  "startLine" : 22,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func setCell()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 158,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 30,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial1/TicTacToe/LoggedOut/DELETE_ME.swift",
  "fileLinesCount" : 37,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 29,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func setCell()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 151,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 30,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 29,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToOffGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 64,
  "endLine" : 67,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToTicTacToe()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 75,
  "components" : [ "primary::ios" ],
  "startLine" : 27,
  "endLine" : 31,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 29,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 94,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 34,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func setCell()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 182,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 30,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToOffGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 81,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 50,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/TicTacToeAdapter.swift",
  "fileLinesCount" : 41,
  "components" : [ "primary::ios" ],
  "startLine" : 33,
  "endLine" : 36,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToOffGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 85,
  "components" : [ "primary::ios" ],
  "startLine" : 22,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 85,
  "components" : [ "primary::ios" ],
  "startLine" : 37,
  "endLine" : 40,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/RandomWinAdapter.swift",
  "fileLinesCount" : 43,
  "components" : [ "primary::ios" ],
  "startLine" : 35,
  "endLine" : 38,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_shared_optional()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/DI/ComponentTests.swift",
  "fileLinesCount" : 67,
  "components" : [ "primary::ios" ],
  "startLine" : 34,
  "endLine" : 37,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibHierarchyPayload()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 29,
  "endLine" : 32,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibApplication()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 45,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibActivity()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 63,
  "endLine" : 66,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setNode()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 467,
  "endLine" : 470,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setView()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 472,
  "endLine" : 475,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibTouchOverlayView()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 489,
  "endLine" : 492,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public InteractorWithPresenterGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/InteractorWithPresenterGenerator.java",
  "fileLinesCount" : 34,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 28,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public InteractorWithEmptyPresenterGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/InteractorWithEmptyPresenterGenerator.java",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public InteractorWithEmptyPresenterTestGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/InteractorWithEmptyPresenterTestGenerator.java",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public InteractorWithPresenterTestGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/InteractorWithPresenterTestGenerator.java",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void actionPerformed()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateRibAction.java",
  "fileLinesCount" : 43,
  "components" : [ "primary::android" ],
  "startLine" : 27,
  "endLine" : 30,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun updateText()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyNodeDescriptor.kt",
  "fileLinesCount" : 47,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 37,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun updateText()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyActivityDescriptor.kt",
  "fileLinesCount" : 45,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 40,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun formatQualifiedName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 96,
  "endLine" : 99,
  "linesOfCode" : 4,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun formatSimpleName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 102,
  "endLine" : 105,
  "linesOfCode" : 4,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun focusGained()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 149,
  "endLine" : 152,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun onAvailableDevicesChanged()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyPanel.kt",
  "fileLinesCount" : 186,
  "components" : [ "primary::android" ],
  "startLine" : 116,
  "endLine" : 119,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun isBridgeConnected()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/AndroidDeviceRepository.kt",
  "fileLinesCount" : 96,
  "components" : [ "primary::android" ],
  "startLine" : 82,
  "endLine" : 85,
  "linesOfCode" : 4,
  "mcCabeIndex" : 3,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun dispose()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/AndroidDeviceRepository.kt",
  "fileLinesCount" : 96,
  "components" : [ "primary::android" ],
  "startLine" : 87,
  "endLine" : 90,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onFailure()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 108,
  "endLine" : 111,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun highlightRib()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 122,
  "endLine" : 125,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun highlightView()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 127,
  "endLine" : 130,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onFailure()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 166,
  "endLine" : 169,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setErrorDescription()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastResponse.java",
  "fileLinesCount" : 48,
  "components" : [ "primary::android" ],
  "startLine" : 39,
  "endLine" : 42,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "constructor()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/desktop/src/TreeChart.js",
  "fileLinesCount" : 131,
  "components" : [ "primary::android" ],
  "startLine" : 9,
  "endLine" : 12,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun willAttach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-compose/src/main/kotlin/com/uber/rib/core/BasicComposeRouter.kt",
  "fileLinesCount" : 35,
  "components" : [ "primary::android" ],
  "startLine" : 26,
  "endLine" : 29,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun willDetach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-compose/src/main/kotlin/com/uber/rib/core/BasicComposeRouter.kt",
  "fileLinesCount" : 35,
  "components" : [ "primary::android" ],
  "startLine" : 31,
  "endLine" : 34,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun takeNext()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/AndroidRecordingRx2Observer.kt",
  "fileLinesCount" : 89,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 51,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun takeError()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/AndroidRecordingRx2Observer.kt",
  "fileLinesCount" : 89,
  "components" : [ "primary::android" ],
  "startLine" : 53,
  "endLine" : 56,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun finished()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-coroutines-test/src/main/kotlin/com/uber/rib/core/RibCoroutinesRule.kt",
  "fileLinesCount" : 41,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 40,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun installTestDispatchers()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-coroutines-test/src/main/kotlin/com/uber/rib/core/TestRibDispatchers.kt",
  "fileLinesCount" : 54,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 45,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun resetTestDispatchers()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-coroutines-test/src/main/kotlin/com/uber/rib/core/TestRibDispatchers.kt",
  "fileLinesCount" : 54,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 50,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onPostDetachFromHost()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterAndState.kt",
  "fileLinesCount" : 152,
  "components" : [ "primary::android" ],
  "startLine" : 109,
  "endLine" : 112,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun peekRouter()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/StackRouterNavigator.kt",
  "fileLinesCount" : 419,
  "components" : [ "primary::android" ],
  "startLine" : 177,
  "endLine" : 180,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun peekState()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/StackRouterNavigator.kt",
  "fileLinesCount" : 419,
  "components" : [ "primary::android" ],
  "startLine" : 182,
  "endLine" : 185,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onStart()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 112,
  "endLine" : 115,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onResume()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 118,
  "endLine" : 121,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onNewIntent()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 124,
  "endLine" : 127,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onActivityResult()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 130,
  "endLine" : 133,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onPause()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 136,
  "endLine" : 139,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onStop()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 142,
  "endLine" : 145,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onLowMemory()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 159,
  "endLine" : 162,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onTrimMemory()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 165,
  "endLine" : 168,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onUserLeaveHint()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 196,
  "endLine" : 199,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onWindowFocusChanged()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 201,
  "endLine" : 204,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun createView()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/ViewBuilder.kt",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 39,
  "endLine" : 42,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onStart()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/CoreAppCompatActivity.kt",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 43,
  "endLine" : 46,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onResume()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/CoreAppCompatActivity.kt",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 49,
  "endLine" : 52,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onPause()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/CoreAppCompatActivity.kt",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 55,
  "endLine" : 58,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onStop()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/CoreAppCompatActivity.kt",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 61,
  "endLine" : 64,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onActivityResult()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/CoreAppCompatActivity.kt",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 84,
  "endLine" : 87,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "open fun buildViewInternal()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-screen-stack-base/src/main/kotlin/com/uber/rib/core/screenstack/ViewProvider.kt",
  "fileLinesCount" : 82,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 37,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun onViewRemoved()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-screen-stack-base/src/main/kotlin/com/uber/rib/core/screenstack/ViewProvider.kt",
  "fileLinesCount" : 82,
  "components" : [ "primary::android" ],
  "startLine" : 57,
  "endLine" : 60,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun process()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-app/src/main/kotlin/com/uber/rib/compiler/ProcessorPipeline.kt",
  "fileLinesCount" : 45,
  "components" : [ "primary::android" ],
  "startLine" : 31,
  "endLine" : 34,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun processTypeElements()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-app/src/main/kotlin/com/uber/rib/compiler/RibInteractorProcessorPipeline.kt",
  "fileLinesCount" : 85,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 45,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun watch()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 100,
  "endLine" : 112,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun handleBackPress()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 73,
  "endLine" : 76,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun unbind()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibCoroutineWorker.kt",
  "fileLinesCount" : 270,
  "components" : [ "primary::android" ],
  "startLine" : 93,
  "endLine" : 96,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun handleNonFatalWarning()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Rib.kt",
  "fileLinesCount" : 102,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 61,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected ViewRouter createRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/RootActivity.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 28,
  "endLine" : 31,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootInteractor.java",
  "fileLinesCount" : 49,
  "components" : [ "primary::android" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void login()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootInteractor.java",
  "fileLinesCount" : 49,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 44,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static LoggedOutRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 77,
  "endLine" : 80,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static OffGameRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 114,
  "components" : [ "primary::android" ],
  "startLine" : 77,
  "endLine" : 80,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static TicTacToeRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 76,
  "endLine" : 79,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInInteractor.java",
  "fileLinesCount" : 45,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 35,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void onStartGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInInteractor.java",
  "fileLinesCount" : 45,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 43,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootInteractor.java",
  "fileLinesCount" : 50,
  "components" : [ "primary::android" ],
  "startLine" : 33,
  "endLine" : 36,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void requestLogin()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootInteractor.java",
  "fileLinesCount" : 50,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 45,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static LoggedOutRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 77,
  "endLine" : 80,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Pair apply()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 65,
  "endLine" : 68,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static OffGameRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 127,
  "components" : [ "primary::android" ],
  "startLine" : 91,
  "endLine" : 94,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setPlayerNames()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 66,
  "endLine" : 69,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static RandomWinnerRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/randomWinner/RandomWinnerBuilder.java",
  "fileLinesCount" : 122,
  "components" : [ "primary::android" ],
  "startLine" : 87,
  "endLine" : 90,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static TicTacToeRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 121,
  "components" : [ "primary::android" ],
  "startLine" : 84,
  "endLine" : 87,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static MutableScoreStream mutableScoreStream()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 201,
  "components" : [ "primary::android" ],
  "startLine" : 96,
  "endLine" : 99,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInInteractor.java",
  "fileLinesCount" : 72,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 45,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected ViewRouter createRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/RootActivity.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 28,
  "endLine" : 31,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootInteractor.java",
  "fileLinesCount" : 38,
  "components" : [ "primary::android" ],
  "startLine" : 31,
  "endLine" : 34,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static LoggedOutRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 76,
  "endLine" : 79,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedout/LoggedOutRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static OffGameRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 114,
  "components" : [ "primary::android" ],
  "startLine" : 77,
  "endLine" : 80,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void onFinishInflate()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 56,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 50,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static TicTacToeRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 76,
  "endLine" : 79,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected ViewRouter createRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial1/src/main/java/com/uber/rib/RootActivity.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 28,
  "endLine" : 31,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected ViewRouter createRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/RootActivity.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 28,
  "endLine" : 31,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootInteractor.java",
  "fileLinesCount" : 49,
  "components" : [ "primary::android" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void requestLogin()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootInteractor.java",
  "fileLinesCount" : 49,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 44,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static LoggedOutRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 77,
  "endLine" : 80,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Pair apply()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 65,
  "endLine" : 68,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static OffGameRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 87,
  "endLine" : 90,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setPlayerNames()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 63,
  "endLine" : 66,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static TicTacToeRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 121,
  "components" : [ "primary::android" ],
  "startLine" : 84,
  "endLine" : 87,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeRouter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeRouter.java",
  "fileLinesCount" : 27,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static MutableScoreStream mutableScoreStream()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 149,
  "components" : [ "primary::android" ],
  "startLine" : 89,
  "endLine" : 92,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInInteractor.java",
  "fileLinesCount" : 69,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 39,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void onStartGame()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInInteractor.java",
  "fileLinesCount" : 69,
  "components" : [ "primary::android" ],
  "startLine" : 51,
  "endLine" : 54,
  "linesOfCode" : 4,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tooling/RIB.xctemplate/Default/___FILEBASENAME___Builder.swift",
  "fileLinesCount" : 40,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tooling/RIB.xctemplate/Default/___FILEBASENAME___Interactor.swift",
  "fileLinesCount" : 35,
  "components" : [ "primary::ios" ],
  "startLine" : 7,
  "endLine" : 11,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tooling/RIB.xctemplate/ownsView/___FILEBASENAME___Builder.swift",
  "fileLinesCount" : 34,
  "components" : [ "primary::ios" ],
  "startLine" : 18,
  "endLine" : 21,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func deactivate()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Interactor.swift",
  "fileLinesCount" : 207,
  "components" : [ "primary::ios" ],
  "startLine" : 57,
  "endLine" : 67,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func launch()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/LaunchRouter.swift",
  "fileLinesCount" : 49,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 29,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cancel()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/LeakDetector/LeakDetector.swift",
  "fileLinesCount" : 194,
  "components" : [ "primary::ios" ],
  "startLine" : 45,
  "endLine" : 54,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/LeakDetector/LeakDetector.swift",
  "fileLinesCount" : 194,
  "components" : [ "primary::ios" ],
  "startLine" : 186,
  "endLine" : 188,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func detachChild()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Router.swift",
  "fileLinesCount" : 227,
  "components" : [ "primary::ios" ],
  "startLine" : 65,
  "endLine" : 76,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func disposeWith()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Workflow/Workflow.swift",
  "fileLinesCount" : 226,
  "components" : [ "primary::ios" ],
  "startLine" : 209,
  "endLine" : 211,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func disposeWith()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Workflow/Workflow.swift",
  "fileLinesCount" : 226,
  "components" : [ "primary::ios" ],
  "startLine" : 223,
  "endLine" : 225,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func start()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Worker/Worker.swift",
  "fileLinesCount" : 217,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/OffGame/OffGameBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 79,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 79,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startTicTacToe()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/OffGame/OffGameInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/OffGame/OffGameInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 60,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func closeGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 131,
  "components" : [ "primary::ios" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 131,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func numberOfSections()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 131,
  "components" : [ "primary::ios" ],
  "startLine" : 101,
  "endLine" : 103,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 131,
  "components" : [ "primary::ios" ],
  "startLine" : 105,
  "endLine" : 107,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 153,
  "components" : [ "primary::ios" ],
  "startLine" : 27,
  "endLine" : 30,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func gameDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 153,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 34,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func closeGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 153,
  "components" : [ "primary::ios" ],
  "startLine" : 74,
  "endLine" : 76,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/TicTacToe/TicTacToeBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func login()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedOut/LoggedOutViewController.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedOut/LoggedOutViewController.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didLogin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedOut/LoggedOutInteractor.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedOut/LoggedOutBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 54,
  "components" : [ "primary::ios" ],
  "startLine" : 33,
  "endLine" : 36,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func dismiss()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 29,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToOffGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 67,
  "components" : [ "primary::ios" ],
  "startLine" : 28,
  "endLine" : 31,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startTicTacToe()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 67,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 60,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func gameDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 67,
  "components" : [ "primary::ios" ],
  "startLine" : 64,
  "endLine" : 66,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/AppStart/AppComponent.swift",
  "fileLinesCount" : 24,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 23,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToLoggedIn()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/Root/RootInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 24,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didLogin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/Root/RootInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 60,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 62,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 62,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 49,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func dismiss()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 29,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 60,
  "components" : [ "primary::ios" ],
  "startLine" : 38,
  "endLine" : 41,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/OffGame/OffGameBuilder.swift",
  "fileLinesCount" : 64,
  "components" : [ "primary::ios" ],
  "startLine" : 43,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func start()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 94,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/OffGame/OffGameInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func start()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/OffGame/OffGameInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 60,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func show()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/OffGame/OffGameRouter.swift",
  "fileLinesCount" : 53,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/RandomWin/RandomWinBuilder.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 43,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/RandomWin/RandomWinInteractor.swift",
  "fileLinesCount" : 70,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 29,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didRandomlyWin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/RandomWin/RandomWinInteractor.swift",
  "fileLinesCount" : 70,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func determineWinner()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/RandomWin/RandomWinViewController.swift",
  "fileLinesCount" : 93,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func placeCurrentPlayerMark()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 22,
  "endLine" : 25,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func numberOfSections()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 110,
  "endLine" : 112,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 114,
  "endLine" : 116,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 182,
  "components" : [ "primary::ios" ],
  "startLine" : 27,
  "endLine" : 30,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func ticTacToeDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 182,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 34,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/TicTacToe/TicTacToeBuilder.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 43,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func updateScore()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/Models/ScoreStream.swift",
  "fileLinesCount" : 65,
  "components" : [ "primary::ios" ],
  "startLine" : 34,
  "endLine" : 37,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func login()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedOut/LoggedOutViewController.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedOut/LoggedOutViewController.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didLogin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedOut/LoggedOutInteractor.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedOut/LoggedOutBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/ScoreBoard/BasicScoreBoardBuilder.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 43,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func set()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/ScoreBoard/BasicScoreBoardInteractor.swift",
  "fileLinesCount" : 63,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 29,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func set()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/ScoreBoard/BasicScoreBoardViewController.swift",
  "fileLinesCount" : 114,
  "components" : [ "primary::ios" ],
  "startLine" : 51,
  "endLine" : 53,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 77,
  "components" : [ "primary::ios" ],
  "startLine" : 56,
  "endLine" : 59,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func replaceModal()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 81,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/TicTacToeAdapter.swift",
  "fileLinesCount" : 41,
  "components" : [ "primary::ios" ],
  "startLine" : 29,
  "endLine" : 31,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func ticTacToeDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/TicTacToeAdapter.swift",
  "fileLinesCount" : 41,
  "components" : [ "primary::ios" ],
  "startLine" : 38,
  "endLine" : 40,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func gameDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/Game.swift",
  "fileLinesCount" : 31,
  "components" : [ "primary::ios" ],
  "startLine" : 20,
  "endLine" : 23,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/Game.swift",
  "fileLinesCount" : 31,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 71,
  "components" : [ "primary::ios" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 71,
  "components" : [ "primary::ios" ],
  "startLine" : 57,
  "endLine" : 59,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func gameDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 71,
  "components" : [ "primary::ios" ],
  "startLine" : 63,
  "endLine" : 65,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/RandomWinAdapter.swift",
  "fileLinesCount" : 43,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didRandomlyWin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/LoggedIn/RandomWinAdapter.swift",
  "fileLinesCount" : 43,
  "components" : [ "primary::ios" ],
  "startLine" : 40,
  "endLine" : 42,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/AppStart/AppComponent.swift",
  "fileLinesCount" : 24,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 23,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToLoggedIn()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/Root/RootInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 24,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didLogin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/Root/RootInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 60,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 87,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func replaceModal()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 71,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 60,
  "components" : [ "primary::ios" ],
  "startLine" : 38,
  "endLine" : 41,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func closeGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 139,
  "components" : [ "primary::ios" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 139,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func numberOfSections()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 139,
  "components" : [ "primary::ios" ],
  "startLine" : 109,
  "endLine" : 111,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 139,
  "components" : [ "primary::ios" ],
  "startLine" : 113,
  "endLine" : 115,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 158,
  "components" : [ "primary::ios" ],
  "startLine" : 27,
  "endLine" : 30,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func gameDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 158,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 34,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func closeGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 158,
  "components" : [ "primary::ios" ],
  "startLine" : 74,
  "endLine" : 76,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/TicTacToe/TicTacToeBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func login()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/LoggedOut/LoggedOutViewController.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/LoggedOut/LoggedOutViewController.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/LoggedOut/LoggedOutBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/AppStart/AppComponent.swift",
  "fileLinesCount" : 24,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 23,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 50,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 50,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 49,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 56,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 58,
  "components" : [ "primary::ios" ],
  "startLine" : 38,
  "endLine" : 41,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 127,
  "endLine" : 129,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial1/TicTacToe/LoggedOut/DELETE_ME.swift",
  "fileLinesCount" : 37,
  "components" : [ "primary::ios" ],
  "startLine" : 34,
  "endLine" : 36,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial1/TicTacToe/AppStart/AppComponent.swift",
  "fileLinesCount" : 24,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 23,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial1/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 50,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial1/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 50,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 49,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial1/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 52,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial1/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 51,
  "components" : [ "primary::ios" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/OffGame/OffGameBuilder.swift",
  "fileLinesCount" : 59,
  "components" : [ "primary::ios" ],
  "startLine" : 42,
  "endLine" : 45,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 146,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func set()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 146,
  "components" : [ "primary::ios" ],
  "startLine" : 51,
  "endLine" : 53,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func set()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/OffGame/OffGameInteractor.swift",
  "fileLinesCount" : 73,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 29,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startTicTacToe()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/OffGame/OffGameInteractor.swift",
  "fileLinesCount" : 73,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/OffGame/OffGameInteractor.swift",
  "fileLinesCount" : 73,
  "components" : [ "primary::ios" ],
  "startLine" : 68,
  "endLine" : 70,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func placeCurrentPlayerMark()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 22,
  "endLine" : 25,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func numberOfSections()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 110,
  "endLine" : 112,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 114,
  "endLine" : 116,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 151,
  "components" : [ "primary::ios" ],
  "startLine" : 27,
  "endLine" : 30,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func gameDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 151,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 34,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/TicTacToe/TicTacToeBuilder.swift",
  "fileLinesCount" : 56,
  "components" : [ "primary::ios" ],
  "startLine" : 39,
  "endLine" : 42,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func updateScore()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Models/ScoreStream.swift",
  "fileLinesCount" : 63,
  "components" : [ "primary::ios" ],
  "startLine" : 34,
  "endLine" : 37,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func login()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedOut/LoggedOutViewController.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedOut/LoggedOutViewController.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didLogin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedOut/LoggedOutInteractor.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedOut/LoggedOutBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 70,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 50,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func dismiss()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 29,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToOffGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 75,
  "components" : [ "primary::ios" ],
  "startLine" : 28,
  "endLine" : 31,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 75,
  "components" : [ "primary::ios" ],
  "startLine" : 42,
  "endLine" : 44,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startTicTacToe()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 75,
  "components" : [ "primary::ios" ],
  "startLine" : 60,
  "endLine" : 62,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/AppStart/AppComponent.swift",
  "fileLinesCount" : 24,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 23,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToLoggedIn()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Root/RootInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 24,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didLogin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Root/RootInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 60,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 62,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func present()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 62,
  "components" : [ "primary::ios" ],
  "startLine" : 47,
  "endLine" : 49,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func dismiss()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 29,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial3-completed/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 60,
  "components" : [ "primary::ios" ],
  "startLine" : 38,
  "endLine" : 41,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/OffGame/OffGameBuilder.swift",
  "fileLinesCount" : 64,
  "components" : [ "primary::ios" ],
  "startLine" : 43,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func start()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/OffGame/OffGameViewController.swift",
  "fileLinesCount" : 94,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/OffGame/OffGameInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func start()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/OffGame/OffGameInteractor.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 58,
  "endLine" : 60,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func show()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/OffGame/OffGameRouter.swift",
  "fileLinesCount" : 53,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/RandomWin/RandomWinBuilder.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 43,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/RandomWin/RandomWinInteractor.swift",
  "fileLinesCount" : 70,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 29,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didRandomlyWin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/RandomWin/RandomWinInteractor.swift",
  "fileLinesCount" : 70,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func determineWinner()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/RandomWin/RandomWinViewController.swift",
  "fileLinesCount" : 93,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func placeCurrentPlayerMark()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 22,
  "endLine" : 25,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func numberOfSections()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 110,
  "endLine" : 112,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func collectionView()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeViewController.swift",
  "fileLinesCount" : 140,
  "components" : [ "primary::ios" ],
  "startLine" : 114,
  "endLine" : 116,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func announce()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 182,
  "components" : [ "primary::ios" ],
  "startLine" : 27,
  "endLine" : 30,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func ticTacToeDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeInteractor.swift",
  "fileLinesCount" : 182,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 34,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/TicTacToe/TicTacToeBuilder.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 43,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func updateScore()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Models/ScoreStream.swift",
  "fileLinesCount" : 65,
  "components" : [ "primary::ios" ],
  "startLine" : 34,
  "endLine" : 37,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func login()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedOut/LoggedOutViewController.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedOut/LoggedOutViewController.swift",
  "fileLinesCount" : 90,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didLogin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedOut/LoggedOutInteractor.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 30,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedOut/LoggedOutBuilder.swift",
  "fileLinesCount" : 48,
  "components" : [ "primary::ios" ],
  "startLine" : 32,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/ScoreBoard/BasicScoreBoardBuilder.swift",
  "fileLinesCount" : 61,
  "components" : [ "primary::ios" ],
  "startLine" : 43,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func set()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/ScoreBoard/BasicScoreBoardInteractor.swift",
  "fileLinesCount" : 63,
  "components" : [ "primary::ios" ],
  "startLine" : 26,
  "endLine" : 29,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func set()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/ScoreBoard/BasicScoreBoardViewController.swift",
  "fileLinesCount" : 114,
  "components" : [ "primary::ios" ],
  "startLine" : 51,
  "endLine" : 53,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInBuilder.swift",
  "fileLinesCount" : 78,
  "components" : [ "primary::ios" ],
  "startLine" : 56,
  "endLine" : 59,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func replaceModal()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInRouter.swift",
  "fileLinesCount" : 81,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/TicTacToeAdapter.swift",
  "fileLinesCount" : 41,
  "components" : [ "primary::ios" ],
  "startLine" : 29,
  "endLine" : 31,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func ticTacToeDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/TicTacToeAdapter.swift",
  "fileLinesCount" : 41,
  "components" : [ "primary::ios" ],
  "startLine" : 38,
  "endLine" : 40,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func gameDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/Game.swift",
  "fileLinesCount" : 31,
  "components" : [ "primary::ios" ],
  "startLine" : 20,
  "endLine" : 23,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/Game.swift",
  "fileLinesCount" : 31,
  "components" : [ "primary::ios" ],
  "startLine" : 24,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 85,
  "components" : [ "primary::ios" ],
  "startLine" : 23,
  "endLine" : 26,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func startGame()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 85,
  "components" : [ "primary::ios" ],
  "startLine" : 57,
  "endLine" : 59,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func gameDidEnd()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/LoggedInInteractor.swift",
  "fileLinesCount" : 85,
  "components" : [ "primary::ios" ],
  "startLine" : 63,
  "endLine" : 65,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/RandomWinAdapter.swift",
  "fileLinesCount" : 43,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func didRandomlyWin()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/LoggedIn/RandomWinAdapter.swift",
  "fileLinesCount" : 43,
  "components" : [ "primary::ios" ],
  "startLine" : 40,
  "endLine" : 42,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/AppStart/AppComponent.swift",
  "fileLinesCount" : 24,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 23,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func routeToLoggedIn()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Root/RootInteractor.swift",
  "fileLinesCount" : 86,
  "components" : [ "primary::ios" ],
  "startLine" : 21,
  "endLine" : 24,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Root/RootViewController.swift",
  "fileLinesCount" : 87,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func replaceModal()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Root/RootRouter.swift",
  "fileLinesCount" : 72,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func build()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial4-completed/TicTacToe/Root/RootBuilder.swift",
  "fileLinesCount" : 62,
  "components" : [ "primary::ios" ],
  "startLine" : 38,
  "endLine" : 41,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func activate()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Mocks.swift",
  "fileLinesCount" : 100,
  "components" : [ "primary::ios" ],
  "startLine" : 62,
  "endLine" : 64,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func deactivate()",
  "longName" : "",
  "relativeFileName" : "ios/RIBsTests/Mocks.swift",
  "fileLinesCount" : 100,
  "components" : [ "primary::ios" ],
  "startLine" : 66,
  "endLine" : 68,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibApplication getApplication()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 36,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public List getActivities()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 54,
  "endLine" : 56,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibNode getRootRib()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 68,
  "endLine" : 70,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 86,
  "endLine" : 88,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public UUID getId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 90,
  "endLine" : 92,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public List getChildren()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 94,
  "endLine" : 96,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addChildren()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 98,
  "endLine" : 100,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RibView getView()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 103,
  "endLine" : 105,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 123,
  "endLine" : 125,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public UUID getId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 127,
  "endLine" : 129,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public List getChildren()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 131,
  "endLine" : 133,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void addChildren()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyPayload.java",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 135,
  "endLine" : 137,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized RibHierarchyPayload buildRibHierarchyPayload()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 162,
  "endLine" : 164,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private synchronized UUID getRouterId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 244,
  "endLine" : 246,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private UUID createRouterIdIfNeeded()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 411,
  "endLine" : 413,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private UUID createViewIdIfNeeded()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 415,
  "endLine" : 417,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String nodeId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 477,
  "endLine" : 479,
  "linesOfCode" : 3,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String viewId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 481,
  "endLine" : 483,
  "linesOfCode" : 3,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public List getMainSourceSetGenerators()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/GeneratorPair.java",
  "fileLinesCount" : 38,
  "components" : [ "primary::android" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public List getTestSourceSetGenerators()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/GeneratorPair.java",
  "fileLinesCount" : 38,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 37,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public BuilderGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/BuilderGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 26,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/BuilderGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 29,
  "endLine" : 31,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public ViewBuilderGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/ViewBuilderGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 26,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/ViewBuilderGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 29,
  "endLine" : 31,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/InteractorWithPresenterGenerator.java",
  "fileLinesCount" : 34,
  "components" : [ "primary::android" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/InteractorWithEmptyPresenterGenerator.java",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RouterGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/RouterGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 26,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/RouterGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 29,
  "endLine" : 31,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/InteractorWithEmptyPresenterTestGenerator.java",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public ViewRouterGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/ViewRouterGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 26,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/ViewRouterGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 29,
  "endLine" : 31,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public ViewRouterTestGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/ViewRouterTestGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 26,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/ViewRouterTestGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 29,
  "endLine" : 31,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RouterTestGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/RouterTestGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 26,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/RouterTestGenerator.java",
  "fileLinesCount" : 32,
  "components" : [ "primary::android" ],
  "startLine" : 29,
  "endLine" : 31,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/InteractorWithPresenterTestGenerator.java",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public ViewGenerator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/ViewGenerator.java",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 25,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getClassName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/rib/ViewGenerator.java",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public final String getPackageName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/Generator.java",
  "fileLinesCount" : 204,
  "components" : [ "primary::android" ],
  "startLine" : 118,
  "endLine" : 120,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public final String getRibName()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/Generator.java",
  "fileLinesCount" : 204,
  "components" : [ "primary::android" ],
  "startLine" : 125,
  "endLine" : 127,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected final Map getTemplateValuesMap()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/generator/Generator.java",
  "fileLinesCount" : 204,
  "components" : [ "primary::android" ],
  "startLine" : 141,
  "endLine" : 143,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected JComponent createCenterPanel()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/GenerateRibDialog.java",
  "fileLinesCount" : 73,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 48,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getUniqueId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibViewNodeDescriptor.kt",
  "fileLinesCount" : 93,
  "components" : [ "primary::android" ],
  "startLine" : 66,
  "endLine" : 68,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun toString()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibViewNodeDescriptor.kt",
  "fileLinesCount" : 93,
  "components" : [ "primary::android" ],
  "startLine" : 70,
  "endLine" : 72,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun getUniqueId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyDescriptor.kt",
  "fileLinesCount" : 78,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 43,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getIcon()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyDescriptor.kt",
  "fileLinesCount" : 78,
  "components" : [ "primary::android" ],
  "startLine" : 70,
  "endLine" : 72,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun updateText()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyApplicationDescriptor.kt",
  "fileLinesCount" : 42,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 37,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getIcon()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyApplicationDescriptor.kt",
  "fileLinesCount" : 42,
  "components" : [ "primary::android" ],
  "startLine" : 39,
  "endLine" : 41,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun isAutoScrollMode()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/HierarchyBrowserBase.kt",
  "fileLinesCount" : 99,
  "components" : [ "primary::android" ],
  "startLine" : 60,
  "endLine" : 62,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun setAutoScrollMode()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/HierarchyBrowserBase.kt",
  "fileLinesCount" : 99,
  "components" : [ "primary::android" ],
  "startLine" : 64,
  "endLine" : 66,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun expandAll()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/HierarchyBrowserBase.kt",
  "fileLinesCount" : 99,
  "components" : [ "primary::android" ],
  "startLine" : 75,
  "endLine" : 77,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getUniqueId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyNodeDescriptor.kt",
  "fileLinesCount" : 47,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 42,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun toString()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyNodeDescriptor.kt",
  "fileLinesCount" : 47,
  "components" : [ "primary::android" ],
  "startLine" : 44,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getIcon()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyActivityDescriptor.kt",
  "fileLinesCount" : 45,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 44,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun isRootElement()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 91,
  "endLine" : 93,
  "linesOfCode" : 3,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun log()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyUtils.kt",
  "fileLinesCount" : 185,
  "components" : [ "primary::android" ],
  "startLine" : 181,
  "endLine" : 183,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun isApplicableElement()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 85,
  "endLine" : 87,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getActionPlace()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 89,
  "endLine" : 91,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getComparator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 93,
  "endLine" : 95,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getPrevOccurenceActionNameImpl()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 104,
  "endLine" : 106,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun createLegendPanel()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 108,
  "endLine" : 110,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun createTrees()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 112,
  "endLine" : 114,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getNextOccurenceActionNameImpl()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 116,
  "endLine" : 118,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun focusLost()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 145,
  "endLine" : 147,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun runActivity()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/AttachRibProjectServiceActivity.kt",
  "fileLinesCount" : 26,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 25,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun isApplicableElement()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 115,
  "endLine" : 117,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getActionPlace()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 119,
  "endLine" : 121,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getComparator()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 123,
  "endLine" : 125,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getPrevOccurenceActionNameImpl()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 134,
  "endLine" : 136,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun createLegendPanel()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 138,
  "endLine" : 140,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getNextOccurenceActionNameImpl()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 142,
  "endLine" : 144,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun createTrees()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 145,
  "endLine" : 147,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun actionPerformed()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 246,
  "endLine" : 248,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun update()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 275,
  "endLine" : 277,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun update()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyBrowser.kt",
  "fileLinesCount" : 307,
  "components" : [ "primary::android" ],
  "startLine" : 293,
  "endLine" : 295,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun onSelectedDeviceChanged()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibHierarchyPanel.kt",
  "fileLinesCount" : 186,
  "components" : [ "primary::android" ],
  "startLine" : 122,
  "endLine" : 124,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun compareTo()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/io/LogcatMessageDecoder.kt",
  "fileLinesCount" : 79,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun toString()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/io/LogcatMessageDecoder.kt",
  "fileLinesCount" : 79,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 43,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun isCancelled()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/io/LogcatRequestProcessor.kt",
  "fileLinesCount" : 154,
  "components" : [ "primary::android" ],
  "startLine" : 116,
  "endLine" : 118,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun isCancelled()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/io/LogcatRequestProcessor.kt",
  "fileLinesCount" : 154,
  "components" : [ "primary::android" ],
  "startLine" : 150,
  "endLine" : 152,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun isLocating()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 132,
  "endLine" : 134,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun run()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 145,
  "endLine" : 174,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun hasSelectedDevice()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 193,
  "endLine" : 195,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun dispose()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 208,
  "endLine" : 210,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun which()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/CommandLineUtils.kt",
  "fileLinesCount" : 108,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 43,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun output()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/CommandLineUtils.kt",
  "fileLinesCount" : 108,
  "components" : [ "primary::android" ],
  "startLine" : 99,
  "endLine" : 101,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun error()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/CommandLineUtils.kt",
  "fileLinesCount" : 108,
  "components" : [ "primary::android" ],
  "startLine" : 104,
  "endLine" : 106,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public T getPayload()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastResponse.java",
  "fileLinesCount" : 48,
  "components" : [ "primary::android" ],
  "startLine" : 45,
  "endLine" : 47,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public String getCommand()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastRequest.java",
  "fileLinesCount" : 153,
  "components" : [ "primary::android" ],
  "startLine" : 62,
  "endLine" : 64,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public boolean isCommand()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastRequest.java",
  "fileLinesCount" : 153,
  "components" : [ "primary::android" ],
  "startLine" : 72,
  "endLine" : 74,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public boolean isValid()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastRequest.java",
  "fileLinesCount" : 153,
  "components" : [ "primary::android" ],
  "startLine" : 94,
  "endLine" : 96,
  "linesOfCode" : 3,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void respond()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastRequest.java",
  "fileLinesCount" : 153,
  "components" : [ "primary::android" ],
  "startLine" : 103,
  "endLine" : 105,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void error()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastRequest.java",
  "fileLinesCount" : 153,
  "components" : [ "primary::android" ],
  "startLine" : 112,
  "endLine" : 114,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static String getTag()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/DebugBroadcastRequest.java",
  "fileLinesCount" : 153,
  "components" : [ "primary::android" ],
  "startLine" : 122,
  "endLine" : 124,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public boolean canHandle()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/AckDebugBroadcastHandler.java",
  "fileLinesCount" : 38,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void handle()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/AckDebugBroadcastHandler.java",
  "fileLinesCount" : 38,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 37,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "componentDidMount()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/desktop/src/TreeChart.js",
  "fileLinesCount" : 131,
  "components" : [ "primary::android" ],
  "startLine" : 14,
  "endLine" : 16,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "componentDidUpdate()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/desktop/src/TreeChart.js",
  "fileLinesCount" : 131,
  "components" : [ "primary::android" ],
  "startLine" : 18,
  "endLine" : 20,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getId()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/src/main/kotlin/com/uber/rib/flipper/RibTreePlugin.kt",
  "fileLinesCount" : 136,
  "components" : [ "primary::android" ],
  "startLine" : 70,
  "endLine" : 72,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun runInBackground()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/src/main/kotlin/com/uber/rib/flipper/RibTreePlugin.kt",
  "fileLinesCount" : 136,
  "components" : [ "primary::android" ],
  "startLine" : 113,
  "endLine" : 115,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getSupportedAnnotationTypes()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-test/src/main/kotlin/com/uber/rib/compiler/RibTestProcessor.kt",
  "fileLinesCount" : 45,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun  toActionableItem()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-workflow/src/main/kotlin/com/uber/rib/workflow/core/Step.kt",
  "fileLinesCount" : 158,
  "components" : [ "primary::android" ],
  "startLine" : 114,
  "endLine" : 116,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun  from()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-workflow/src/main/kotlin/com/uber/rib/workflow/core/Step.kt",
  "fileLinesCount" : 158,
  "components" : [ "primary::android" ],
  "startLine" : 138,
  "endLine" : 140,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "open fun createSingle()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-workflow/src/main/kotlin/com/uber/rib/workflow/core/Workflow.kt",
  "fileLinesCount" : 47,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun reattach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/InteractorHelper.kt",
  "fileLinesCount" : 87,
  "components" : [ "primary::android" ],
  "startLine" : 54,
  "endLine" : 56,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun detach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/InteractorHelper.kt",
  "fileLinesCount" : 87,
  "components" : [ "primary::android" ],
  "startLine" : 64,
  "endLine" : 66,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyAttached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/InteractorHelper.kt",
  "fileLinesCount" : 87,
  "components" : [ "primary::android" ],
  "startLine" : 74,
  "endLine" : 76,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyDetached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/InteractorHelper.kt",
  "fileLinesCount" : 87,
  "components" : [ "primary::android" ],
  "startLine" : 84,
  "endLine" : 86,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun detach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/FakeInteractor.kt",
  "fileLinesCount" : 29,
  "components" : [ "primary::android" ],
  "startLine" : 26,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun presenter()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/FakeComponent.kt",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 25,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onComplete()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/AndroidRecordingRx2Observer.kt",
  "fileLinesCount" : 89,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onError()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/AndroidRecordingRx2Observer.kt",
  "fileLinesCount" : 89,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 42,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onNext()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/AndroidRecordingRx2Observer.kt",
  "fileLinesCount" : 89,
  "components" : [ "primary::android" ],
  "startLine" : 44,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun detach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 50,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyAttached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 58,
  "endLine" : 60,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyAttached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 69,
  "endLine" : 71,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyAttached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 80,
  "endLine" : 82,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyAttached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 91,
  "endLine" : 93,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyAttached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 102,
  "endLine" : 104,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyNotAttached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 112,
  "endLine" : 114,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyDetached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 122,
  "endLine" : 124,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyDetached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 133,
  "endLine" : 135,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyDetached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 144,
  "endLine" : 146,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun verifyNotDetached()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/RouterHelper.kt",
  "fileLinesCount" : 157,
  "components" : [ "primary::android" ],
  "startLine" : 154,
  "endLine" : 156,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun load()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/PresenterHelper.kt",
  "fileLinesCount" : 39,
  "components" : [ "primary::android" ],
  "startLine" : 26,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun unload()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/PresenterHelper.kt",
  "fileLinesCount" : 39,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun createScopeProvider()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/WorkerHelper.kt",
  "fileLinesCount" : 33,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun emitEvent()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigatorEvents.kt",
  "fileLinesCount" : 54,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 48,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun size()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/StackRouterNavigator.kt",
  "fileLinesCount" : 419,
  "components" : [ "primary::android" ],
  "startLine" : 188,
  "endLine" : 190,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun hostWillDetach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/StackRouterNavigator.kt",
  "fileLinesCount" : 419,
  "components" : [ "primary::android" ],
  "startLine" : 394,
  "endLine" : 396,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun createOnCreateEvent()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/lifecycle/ActivityLifecycleEvent.kt",
  "fileLinesCount" : 117,
  "components" : [ "primary::android" ],
  "startLine" : 91,
  "endLine" : 93,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun createOnSaveInstanceStateEvent()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/lifecycle/ActivityCallbackEvent.kt",
  "fileLinesCount" : 155,
  "components" : [ "primary::android" ],
  "startLine" : 113,
  "endLine" : 115,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun createTrimMemoryEvent()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/lifecycle/ActivityCallbackEvent.kt",
  "fileLinesCount" : 155,
  "components" : [ "primary::android" ],
  "startLine" : 124,
  "endLine" : 126,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun createPictureInPictureMode()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/lifecycle/ActivityCallbackEvent.kt",
  "fileLinesCount" : 155,
  "components" : [ "primary::android" ],
  "startLine" : 129,
  "endLine" : 131,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun createNewIntent()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/lifecycle/ActivityCallbackEvent.kt",
  "fileLinesCount" : 155,
  "components" : [ "primary::android" ],
  "startLine" : 140,
  "endLine" : 142,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun createWindowFocusEvent()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/lifecycle/ActivityCallbackEvent.kt",
  "fileLinesCount" : 155,
  "components" : [ "primary::android" ],
  "startLine" : 151,
  "endLine" : 153,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun toggle()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/XRay.kt",
  "fileLinesCount" : 117,
  "components" : [ "primary::android" ],
  "startLine" : 60,
  "endLine" : 62,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun isEnabled()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/XRay.kt",
  "fileLinesCount" : 117,
  "components" : [ "primary::android" ],
  "startLine" : 66,
  "endLine" : 68,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected open fun onThemeContext()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/ViewBuilder.kt",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 62,
  "endLine" : 64,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "open fun setEnabled()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibDebugOverlay.kt",
  "fileLinesCount" : 52,
  "components" : [ "primary::android" ],
  "startLine" : 28,
  "endLine" : 30,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun  exposeStepData()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-workflow-test/src/main/kotlin/com/uber/rib/workflow/core/StepTester.kt",
  "fileLinesCount" : 88,
  "components" : [ "primary::android" ],
  "startLine" : 49,
  "endLine" : 51,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "open fun onBackPress()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-screen-stack-base/src/main/kotlin/com/uber/rib/core/screenstack/ViewProvider.kt",
  "fileLinesCount" : 82,
  "components" : [ "primary::android" ],
  "startLine" : 67,
  "endLine" : 69,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "open fun onViewAppeared()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-screen-stack-base/src/main/kotlin/com/uber/rib/core/screenstack/ViewProvider.kt",
  "fileLinesCount" : 82,
  "components" : [ "primary::android" ],
  "startLine" : 73,
  "endLine" : 75,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "open fun onViewHidden()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-screen-stack-base/src/main/kotlin/com/uber/rib/core/screenstack/ViewProvider.kt",
  "fileLinesCount" : 82,
  "components" : [ "primary::android" ],
  "startLine" : 79,
  "endLine" : 81,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun getSupportedSourceVersion()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-compiler-app/src/main/kotlin/com/uber/rib/compiler/RibProcessor.kt",
  "fileLinesCount" : 77,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 50,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun setReferenceWatcher()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 33,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun enableBreadcrumbLogging()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 69,
  "endLine" : 71,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun enableLeakCanary()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 74,
  "endLine" : 76,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun disableLeakCanary()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 79,
  "endLine" : 81,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun enableULeakLifecycleTracking()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 84,
  "endLine" : 86,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun disableULeakLifecycleTracking()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 89,
  "endLine" : 91,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun logBreadcrumb()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibRefWatcher.kt",
  "fileLinesCount" : 139,
  "components" : [ "primary::android" ],
  "startLine" : 109,
  "endLine" : 112,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected fun inject()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 61,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected open fun attachToInteractor()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 64,
  "endLine" : 66,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun attachChild()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 95,
  "endLine" : 97,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun dispatchAttach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 189,
  "endLine" : 191,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun getChildren()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 228,
  "endLine" : 230,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun saveInstanceStateInternal()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 233,
  "endLine" : 235,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun enableRibActionEmissions()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibEvents.kt",
  "fileLinesCount" : 170,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 48,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun emitRouterEvent()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibEvents.kt",
  "fileLinesCount" : 170,
  "components" : [ "primary::android" ],
  "startLine" : 57,
  "endLine" : 59,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun getBoolean()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Bundle.kt",
  "fileLinesCount" : 148,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun putBoolean()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Bundle.kt",
  "fileLinesCount" : 148,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 49,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun getParcelable()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Bundle.kt",
  "fileLinesCount" : 148,
  "components" : [ "primary::android" ],
  "startLine" : 88,
  "endLine" : 90,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun putParcelable()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Bundle.kt",
  "fileLinesCount" : 148,
  "components" : [ "primary::android" ],
  "startLine" : 99,
  "endLine" : 101,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun getString()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Bundle.kt",
  "fileLinesCount" : 148,
  "components" : [ "primary::android" ],
  "startLine" : 111,
  "endLine" : 113,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun putString()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Bundle.kt",
  "fileLinesCount" : 148,
  "components" : [ "primary::android" ],
  "startLine" : 122,
  "endLine" : 124,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun putInt()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Bundle.kt",
  "fileLinesCount" : 148,
  "components" : [ "primary::android" ],
  "startLine" : 133,
  "endLine" : 135,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun getInt()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Bundle.kt",
  "fileLinesCount" : 148,
  "components" : [ "primary::android" ],
  "startLine" : 145,
  "endLine" : 147,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onStop()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibCoroutineWorker.kt",
  "fileLinesCount" : 270,
  "components" : [ "primary::android" ],
  "startLine" : 265,
  "endLine" : 267,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun handleDebugMessage()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Rib.kt",
  "fileLinesCount" : 102,
  "components" : [ "primary::android" ],
  "startLine" : 57,
  "endLine" : 61,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun handleNonFatalError()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Rib.kt",
  "fileLinesCount" : 102,
  "components" : [ "primary::android" ],
  "startLine" : 62,
  "endLine" : 64,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private boolean isEmpty()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutInteractor.java",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 54,
  "linesOfCode" : 3,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected LoggedOutView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 61,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 58,
  "components" : [ "primary::android" ],
  "startLine" : 32,
  "endLine" : 34,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 58,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 58,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 42,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 114,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected OffGameView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 114,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 61,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 38,
  "endLine" : 40,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 44,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 48,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Observable startGameRequest()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 62,
  "endLine" : 64,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "int getX()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/BoardCoordinate.java",
  "fileLinesCount" : 35,
  "components" : [ "primary::android" ],
  "startLine" : 28,
  "endLine" : 30,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "int getY()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/BoardCoordinate.java",
  "fileLinesCount" : 35,
  "components" : [ "primary::android" ],
  "startLine" : 32,
  "endLine" : 34,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected TicTacToeView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 61,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 43,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 45,
  "endLine" : 47,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setCurrentPlayerName()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 111,
  "endLine" : 113,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setPlayerWon()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 116,
  "endLine" : 118,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setPlayerTie()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 121,
  "endLine" : 123,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedInBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 120,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 37,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static EmptyPresenter presenter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 120,
  "components" : [ "primary::android" ],
  "startLine" : 65,
  "endLine" : 67,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected RootView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 60,
  "endLine" : 62,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 26,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 36,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachLoggedIn()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 56,
  "endLine" : 58,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootWorkflow()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootWorkflow.java",
  "fileLinesCount" : 79,
  "components" : [ "primary::android" ],
  "startLine" : 39,
  "endLine" : 41,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootWorkflow()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootWorkflow.java",
  "fileLinesCount" : 79,
  "components" : [ "primary::android" ],
  "startLine" : 48,
  "endLine" : 50,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected final Step getSteps()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootWorkflow.java",
  "fileLinesCount" : 79,
  "components" : [ "primary::android" ],
  "startLine" : 53,
  "endLine" : 55,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TDeepLinkModel getDeepLinkModel()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootWorkflow.java",
  "fileLinesCount" : 79,
  "components" : [ "primary::android" ],
  "startLine" : 60,
  "endLine" : 62,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public static UserName create()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/UserName.java",
  "fileLinesCount" : 30,
  "components" : [ "primary::android" ],
  "startLine" : 25,
  "endLine" : 27,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private boolean isEmpty()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutInteractor.java",
  "fileLinesCount" : 68,
  "components" : [ "primary::android" ],
  "startLine" : 54,
  "endLine" : 56,
  "linesOfCode" : 3,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected LoggedOutView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 61,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 38,
  "endLine" : 40,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 44,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 48,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 127,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 43,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected OffGameView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 127,
  "components" : [ "primary::android" ],
  "startLine" : 64,
  "endLine" : 66,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 43,
  "endLine" : 45,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 49,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 100,
  "components" : [ "primary::android" ],
  "startLine" : 51,
  "endLine" : 53,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RandomWinnerView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/randomWinner/RandomWinnerView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 26,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RandomWinnerView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/randomWinner/RandomWinnerView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RandomWinnerView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/randomWinner/RandomWinnerView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 36,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RandomWinnerBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/randomWinner/RandomWinnerBuilder.java",
  "fileLinesCount" : 122,
  "components" : [ "primary::android" ],
  "startLine" : 40,
  "endLine" : 42,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected RandomWinnerView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/randomWinner/RandomWinnerBuilder.java",
  "fileLinesCount" : 122,
  "components" : [ "primary::android" ],
  "startLine" : 63,
  "endLine" : 66,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "int getX()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/BoardCoordinate.java",
  "fileLinesCount" : 35,
  "components" : [ "primary::android" ],
  "startLine" : 28,
  "endLine" : 30,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "int getY()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/BoardCoordinate.java",
  "fileLinesCount" : 35,
  "components" : [ "primary::android" ],
  "startLine" : 32,
  "endLine" : 34,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 121,
  "components" : [ "primary::android" ],
  "startLine" : 38,
  "endLine" : 40,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected TicTacToeView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 121,
  "components" : [ "primary::android" ],
  "startLine" : 61,
  "endLine" : 63,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 43,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 45,
  "endLine" : 47,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setCurrentPlayerName()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 111,
  "endLine" : 113,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setPlayerWon()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 116,
  "endLine" : 118,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setPlayerTie()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 121,
  "endLine" : 123,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedInBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 201,
  "components" : [ "primary::android" ],
  "startLine" : 45,
  "endLine" : 47,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static EmptyPresenter presenter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 201,
  "components" : [ "primary::android" ],
  "startLine" : 77,
  "endLine" : 79,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected RootView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 60,
  "endLine" : 62,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 26,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial4/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 36,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected LoggedOutView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 61,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 55,
  "components" : [ "primary::android" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 55,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 37,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 55,
  "components" : [ "primary::android" ],
  "startLine" : 39,
  "endLine" : 41,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 114,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected OffGameView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 114,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 61,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 56,
  "components" : [ "primary::android" ],
  "startLine" : 33,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 56,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 56,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 43,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Observable startGameRequest()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 56,
  "components" : [ "primary::android" ],
  "startLine" : 53,
  "endLine" : 55,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "int getX()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/BoardCoordinate.java",
  "fileLinesCount" : 35,
  "components" : [ "primary::android" ],
  "startLine" : 28,
  "endLine" : 30,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "int getY()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/BoardCoordinate.java",
  "fileLinesCount" : 35,
  "components" : [ "primary::android" ],
  "startLine" : 32,
  "endLine" : 34,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected TicTacToeView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 113,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 61,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 43,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 45,
  "endLine" : 47,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setCurrentPlayerName()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 111,
  "endLine" : 113,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setPlayerWon()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 116,
  "endLine" : 118,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setPlayerTie()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 121,
  "endLine" : 123,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 108,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 37,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected RootView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 108,
  "components" : [ "primary::android" ],
  "startLine" : 58,
  "endLine" : 60,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static RootRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 108,
  "components" : [ "primary::android" ],
  "startLine" : 75,
  "endLine" : 77,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 26,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 36,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void didBecomeActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial1/src/main/java/com/uber/rib/root/RootInteractor.java",
  "fileLinesCount" : 39,
  "components" : [ "primary::android" ],
  "startLine" : 31,
  "endLine" : 35,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial1/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 104,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 36,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected RootView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial1/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 104,
  "components" : [ "primary::android" ],
  "startLine" : 57,
  "endLine" : 59,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static RootRouter router()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial1/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 104,
  "components" : [ "primary::android" ],
  "startLine" : 74,
  "endLine" : 76,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial1/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 26,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial1/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial1/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 36,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private boolean isEmpty()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutInteractor.java",
  "fileLinesCount" : 66,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 54,
  "linesOfCode" : 3,
  "mcCabeIndex" : 2,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 38,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected LoggedOutView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutBuilder.java",
  "fileLinesCount" : 116,
  "components" : [ "primary::android" ],
  "startLine" : 59,
  "endLine" : 61,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 38,
  "endLine" : 40,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 44,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedOutView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedout/LoggedOutView.java",
  "fileLinesCount" : 71,
  "components" : [ "primary::android" ],
  "startLine" : 46,
  "endLine" : 48,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 38,
  "endLine" : 40,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected OffGameView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 61,
  "endLine" : 63,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 39,
  "endLine" : 41,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 43,
  "endLine" : 45,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public OffGameView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 49,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public Observable startGameRequest()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/offgame/OffGameView.java",
  "fileLinesCount" : 80,
  "components" : [ "primary::android" ],
  "startLine" : 77,
  "endLine" : 79,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "int getX()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/BoardCoordinate.java",
  "fileLinesCount" : 35,
  "components" : [ "primary::android" ],
  "startLine" : 28,
  "endLine" : 30,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "int getY()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/BoardCoordinate.java",
  "fileLinesCount" : 35,
  "components" : [ "primary::android" ],
  "startLine" : 32,
  "endLine" : 34,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 121,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected TicTacToeView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeBuilder.java",
  "fileLinesCount" : 121,
  "components" : [ "primary::android" ],
  "startLine" : 60,
  "endLine" : 62,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 41,
  "endLine" : 43,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public TicTacToeView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 45,
  "endLine" : 47,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setCurrentPlayerName()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 111,
  "endLine" : 113,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setPlayerWon()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 116,
  "endLine" : 118,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void setPlayerTie()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/tictactoe/TicTacToeView.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 121,
  "endLine" : 123,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public LoggedInBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 149,
  "components" : [ "primary::android" ],
  "startLine" : 38,
  "endLine" : 40,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "static EmptyPresenter presenter()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInBuilder.java",
  "fileLinesCount" : 149,
  "components" : [ "primary::android" ],
  "startLine" : 70,
  "endLine" : 72,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected void willResignActive()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/loggedin/LoggedInInteractor.java",
  "fileLinesCount" : 69,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 46,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootBuilder()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 37,
  "endLine" : 39,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected RootView inflateView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootBuilder.java",
  "fileLinesCount" : 124,
  "components" : [ "primary::android" ],
  "startLine" : 60,
  "endLine" : 62,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 26,
  "endLine" : 28,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 32,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public RootView()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootView.java",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 36,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "void attachLoggedIn()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial3-completed/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 56,
  "endLine" : 58,
  "linesOfCode" : 3,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func cleanupViews()",
  "longName" : "",
  "relativeFileName" : "ios/tooling/RIB.xctemplate/Default/___FILEBASENAME___Router.swift",
  "fileLinesCount" : 33,
  "components" : [ "primary::ios" ],
  "startLine" : 25,
  "endLine" : 28,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_exampleObservable_callsRouterOrListener_exampleProtocol()",
  "longName" : "",
  "relativeFileName" : "ios/tooling/RIB Unit Tests.xctemplate/___FILEBASENAME___InteractorTests.swift",
  "fileLinesCount" : 24,
  "components" : [ "primary::ios" ],
  "startLine" : 20,
  "endLine" : 23,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func test_routeToExample_invokesToExampleResult()",
  "longName" : "",
  "relativeFileName" : "ios/tooling/RIB Unit Tests.xctemplate/___FILEBASENAME___RouterTests.swift",
  "fileLinesCount" : 24,
  "components" : [ "primary::ios" ],
  "startLine" : 20,
  "endLine" : 23,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "func stop()",
  "longName" : "",
  "relativeFileName" : "ios/RIBs/Classes/Worker/Worker.swift",
  "fileLinesCount" : 217,
  "components" : [ "primary::ios" ],
  "startLine" : 36,
  "endLine" : 39,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 31,
  "endLine" : 32,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 68,
  "endLine" : 69,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 183,
  "endLine" : 184,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 218,
  "endLine" : 219,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "init()",
  "longName" : "",
  "relativeFileName" : "ios/tutorials/tutorial2/TicTacToeTests/TicTacToeMocks.swift",
  "fileLinesCount" : 273,
  "components" : [ "primary::ios" ],
  "startLine" : 257,
  "endLine" : 258,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun appendActions()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibViewBrowser.kt",
  "fileLinesCount" : 198,
  "components" : [ "primary::android" ],
  "startLine" : 127,
  "endLine" : 129,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun run()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/RibProjectService.kt",
  "fileLinesCount" : 242,
  "components" : [ "primary::android" ],
  "startLine" : 94,
  "endLine" : 116,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "render()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-flipper-plugin/desktop/src/TreeChart.js",
  "fileLinesCount" : 131,
  "components" : [ "primary::android" ],
  "startLine" : 127,
  "endLine" : 128,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun attachToInteractor()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/FakeRouter.kt",
  "fileLinesCount" : 34,
  "components" : [ "primary::android" ],
  "startLine" : 31,
  "endLine" : 33,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public suspend fun onStart()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibCoroutineWorker.kt",
  "fileLinesCount" : 270,
  "components" : [ "primary::android" ],
  "startLine" : 49,
  "endLine" : 52,
  "linesOfCode" : 2,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private RibHierarchyUtils()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyUtils.java",
  "fileLinesCount" : 59,
  "components" : [ "primary::android" ],
  "startLine" : 24,
  "endLine" : 24,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void onSubscribe()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 121,
  "endLine" : 121,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void onError()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 157,
  "endLine" : 157,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void onComplete()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/native/intellij-broadcast-rib/src/main/java/com/uber/debug/broadcast/rib/RibHierarchyDebugBroadcastHandler.java",
  "fileLinesCount" : 508,
  "components" : [ "primary::android" ],
  "startLine" : 160,
  "endLine" : 160,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "private Generators()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/java/com/uber/presidio/intellij_plugin/action/rib/Generators.java",
  "fileLinesCount" : 86,
  "components" : [ "primary::android" ],
  "startLine" : 35,
  "endLine" : 35,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun updateText()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/RibHierarchyDescriptor.kt",
  "fileLinesCount" : 78,
  "components" : [ "primary::android" ],
  "startLine" : 38,
  "endLine" : 38,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun onRefreshComplete()",
  "longName" : "",
  "relativeFileName" : "android/tooling/rib-intellij-plugin/src/main/kotlin/com/uber/intellij/plugin/android/rib/ui/HierarchyBrowserBase.kt",
  "fileLinesCount" : 99,
  "components" : [ "primary::android" ],
  "startLine" : 72,
  "endLine" : 72,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public AckDebugBroadcastHandler()",
  "longName" : "",
  "relativeFileName" : "android/tooling/utils/intellij-broadcast-core/src/main/java/com/uber/debug/broadcast/core/AckDebugBroadcastHandler.java",
  "fileLinesCount" : 38,
  "components" : [ "primary::android" ],
  "startLine" : 27,
  "endLine" : 27,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun inject()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/FakeComponent.kt",
  "fileLinesCount" : 37,
  "components" : [ "primary::android" ],
  "startLine" : 23,
  "endLine" : 23,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun onSubscribe()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-test/src/main/kotlin/com/uber/rib/core/AndroidRecordingRx2Observer.kt",
  "fileLinesCount" : 89,
  "components" : [ "primary::android" ],
  "startLine" : 34,
  "endLine" : 34,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public open fun onPostDetachFromHost()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-router-navigator/src/main/kotlin/com/uber/rib/core/RouterNavigator.kt",
  "fileLinesCount" : 299,
  "components" : [ "primary::android" ],
  "startLine" : 272,
  "endLine" : 272,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 3,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected open fun onUnhandledBackPressed()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibActivity.kt",
  "fileLinesCount" : 260,
  "components" : [ "primary::android" ],
  "startLine" : 210,
  "endLine" : 210,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun setAlpha()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibDebugOverlay.kt",
  "fileLinesCount" : 52,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 42,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun setColorFilter()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android/src/main/kotlin/com/uber/rib/core/RibDebugOverlay.kt",
  "fileLinesCount" : 52,
  "components" : [ "primary::android" ],
  "startLine" : 44,
  "endLine" : 44,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun onCreate()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/ActivityDelegate.kt",
  "fileLinesCount" : 62,
  "components" : [ "primary::android" ],
  "startLine" : 30,
  "endLine" : 30,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun onStart()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/ActivityDelegate.kt",
  "fileLinesCount" : 62,
  "components" : [ "primary::android" ],
  "startLine" : 33,
  "endLine" : 33,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun onResume()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/ActivityDelegate.kt",
  "fileLinesCount" : 62,
  "components" : [ "primary::android" ],
  "startLine" : 36,
  "endLine" : 36,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun onPause()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/ActivityDelegate.kt",
  "fileLinesCount" : 62,
  "components" : [ "primary::android" ],
  "startLine" : 39,
  "endLine" : 39,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun onStop()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/ActivityDelegate.kt",
  "fileLinesCount" : 62,
  "components" : [ "primary::android" ],
  "startLine" : 42,
  "endLine" : 42,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "fun onDestroy()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-android-core/src/main/kotlin/com/uber/rib/core/ActivityDelegate.kt",
  "fileLinesCount" : 62,
  "components" : [ "primary::android" ],
  "startLine" : 45,
  "endLine" : 45,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected open fun doOnViewRemoved()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-screen-stack-base/src/main/kotlin/com/uber/rib/core/screenstack/ViewProvider.kt",
  "fileLinesCount" : 82,
  "components" : [ "primary::android" ],
  "startLine" : 54,
  "endLine" : 54,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected open fun willResignActive()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Interactor.kt",
  "fileLinesCount" : 219,
  "components" : [ "primary::android" ],
  "startLine" : 97,
  "endLine" : 97,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected open fun onSaveInstanceState()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Interactor.kt",
  "fileLinesCount" : 219,
  "components" : [ "primary::android" ],
  "startLine" : 108,
  "endLine" : 108,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected open fun willAttach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 86,
  "endLine" : 86,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "protected open fun willDetach()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Router.kt",
  "fileLinesCount" : 278,
  "components" : [ "primary::android" ],
  "startLine" : 92,
  "endLine" : 92,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun onStart()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Worker.kt",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 61,
  "endLine" : 61,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun onStop()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Worker.kt",
  "fileLinesCount" : 65,
  "components" : [ "primary::android" ],
  "startLine" : 64,
  "endLine" : 64,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public fun onStop()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/RibCoroutineWorker.kt",
  "fileLinesCount" : 270,
  "components" : [ "primary::android" ],
  "startLine" : 52,
  "endLine" : 52,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 1,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun handleNonFatalWarning()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Rib.kt",
  "fileLinesCount" : 102,
  "components" : [ "primary::android" ],
  "startLine" : 66,
  "endLine" : 66,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "override fun handleDebugMessage()",
  "longName" : "",
  "relativeFileName" : "android/libraries/rib-base/src/main/kotlin/com/uber/rib/core/Rib.kt",
  "fileLinesCount" : 102,
  "components" : [ "primary::android" ],
  "startLine" : 67,
  "endLine" : 67,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 2,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void attachLoggedIn()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 48,
  "components" : [ "primary::android" ],
  "startLine" : 45,
  "endLine" : 45,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
}, {
  "shortName" : "public void detachLoggedOut()",
  "longName" : "",
  "relativeFileName" : "android/tutorials/tutorial2/src/main/java/com/uber/rib/root/RootRouter.java",
  "fileLinesCount" : 48,
  "components" : [ "primary::android" ],
  "startLine" : 47,
  "endLine" : 47,
  "linesOfCode" : 1,
  "mcCabeIndex" : 1,
  "numberOfParameters" : 0,
  "numberOfLiterals" : 0,
  "numberOfStatements" : 0,
  "numberOfExpressions" : 0
} ]