[
  {
    "fragmentId": "method:1va0nah:prouserhandler__fragment",
    "ownerFileId": "file:1hyu1ez:prouserhandler-cs",
    "ownerSymbolId": "method:1va0nah:prouserhandler",
    "ownerSymbolName": "ProUserHandler",
    "entryNodeId": "method:1va0nah:prouserhandler__entry",
    "exitNodeIds": [
      "method:1va0nah:prouserhandler__implicit_return"
    ],
    "nodes": [
      {
        "id": "method:1va0nah:prouserhandler__entry",
        "kind": "entry",
        "label": "ProUserHandler entry",
        "line": 15,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.99,
        "detail": "Constructor: receives and stores a DbContext factory for use by the handler."
      },
      {
        "id": "method:1va0nah:prouserhandler__action_17_assign_17__linear",
        "kind": "statement",
        "label": "Store injected dependency",
        "line": 17,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "Assigns _dbContextFactory = dbContextFactory"
      },
      {
        "id": "method:1va0nah:prouserhandler__implicit_return",
        "kind": "return",
        "label": "return",
        "line": 18,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.72,
        "detail": "Implicit method exit inferred from method boundary."
      }
    ],
    "edges": [
      {
        "id": "method:1va0nah:prouserhandler__entry__method:1va0nah:prouserhandler__action_17_assign_17__linear",
        "from": "method:1va0nah:prouserhandler__entry",
        "to": "method:1va0nah:prouserhandler__action_17_assign_17__linear",
        "kind": "next",
        "line": 17,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1va0nah:prouserhandler__action_17_assign_17__linear__implicit_return",
        "from": "method:1va0nah:prouserhandler__action_17_assign_17__linear",
        "to": "method:1va0nah:prouserhandler__implicit_return",
        "kind": "return",
        "line": 18,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.72
      }
    ],
    "jumpTargets": [],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [],
    "language": "csharp",
    "confidence": 0.76,
    "lineSpan": {
      "start": 15,
      "end": 18
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "line": 15,
        "summary": "Control-flow fragment extracted for method ProUserHandler.",
        "kind": "file-summary"
      }
    ]
  },
  {
    "fragmentId": "method:14jdxkg:handlerequirementasync__fragment",
    "ownerFileId": "file:1hyu1ez:prouserhandler-cs",
    "ownerSymbolId": "method:14jdxkg:handlerequirementasync",
    "ownerSymbolName": "HandleRequirementAsync",
    "entryNodeId": "method:14jdxkg:handlerequirementasync__entry",
    "exitNodeIds": [
      "method:14jdxkg:handlerequirementasync__action_27_handlerequirementasync_return_27_2__return",
      "method:14jdxkg:handlerequirementasync__action_37_handlerequirementasync_return_37_5__return",
      "method:14jdxkg:handlerequirementasync__action_44_handlerequirementasync_return_44_8__return",
      "method:14jdxkg:handlerequirementasync__action_51_handlerequirementasync_return_51_11__return",
      "method:14jdxkg:handlerequirementasync__implicit_return"
    ],
    "nodes": [
      {
        "id": "method:14jdxkg:handlerequirementasync__entry",
        "kind": "entry",
        "label": "HandleRequirementAsync entry",
        "line": 20,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.99,
        "detail": "Core authorization logic: loads the current user from the DB and grants the requirement when the user has unlimited tokens or remaining AI token quota."
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_24_handlerequirementasync_repository_read_24_0__linear",
        "kind": "db-read",
        "label": "Reads repository or persistence state",
        "line": 24,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.86,
        "detail": "var userId = context.User.FindFirstValue(ClaimTypes.NameIdentifier);"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_24_claim_read_24__linear",
        "kind": "statement",
        "label": "Read user id from ClaimsPrincipal",
        "line": 24,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "var userId = context.User.FindFirstValue(ClaimTypes.NameIdentifier)"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__condition",
        "kind": "condition",
        "label": "string.IsNullOrEmpty(userId)",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "If no NameIdentifier claim, method returns early"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__true",
        "kind": "branch-true",
        "label": "return (no authorization attempt)",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__false",
        "kind": "branch-false",
        "label": "otherwise",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__merge",
        "kind": "statement",
        "label": "merge",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__condition",
        "kind": "condition",
        "label": "string.IsNullOrEmpty(userId)",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78,
        "detail": "if (string.IsNullOrEmpty(userId))"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__true",
        "kind": "branch-true",
        "label": "true",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__false",
        "kind": "branch-false",
        "label": "false",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__merge",
        "kind": "statement",
        "label": "merge",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_27_handlerequirementasync_return_27_2__return",
        "kind": "return",
        "label": "Returns result",
        "line": 27,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "return;"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_30_db_context_create_30__linear",
        "kind": "statement",
        "label": "Create DbContext from factory (scoped local using)",
        "line": 30,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "using var db = _dbContextFactory.CreateDbContext(); ensures disposal at end of block"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_31_handlerequirementasync_await_31_3__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 31,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.81,
        "detail": "var user = await db.Users"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_31_db_query_31__linear",
        "kind": "statement",
        "label": "Load user with subscription",
        "line": 31,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "var user = await db.Users.Include(u => u.SubscriptionPlan).FirstOrDefaultAsync(u => u.Id == userId); — reads user and subscription from persistence"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_null_check_35__linear",
        "kind": "statement",
        "label": "Return if user not found",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "No requirement evaluation when the user record cannot be found"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__condition",
        "kind": "condition",
        "label": "user == null",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78,
        "detail": "if (user == null)"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__true",
        "kind": "branch-true",
        "label": "true",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__false",
        "kind": "branch-false",
        "label": "false",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__merge",
        "kind": "statement",
        "label": "merge",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_37_handlerequirementasync_return_37_5__return",
        "kind": "return",
        "label": "Returns result",
        "line": 37,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "return;"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_40_branch_40__condition",
        "kind": "condition",
        "label": "user.SubscriptionPlan?.IsUnlimitedTokens == true",
        "line": 40,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "If subscription marks unlimited tokens, the requirement is succeeded and method returns"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_40_branch_40__true",
        "kind": "branch-true",
        "label": "context.Succeed(requirement)",
        "line": 40,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_40_branch_40__false",
        "kind": "branch-false",
        "label": "return",
        "line": 40,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_40_branch_40__merge",
        "kind": "statement",
        "label": "merge",
        "line": 40,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__condition",
        "kind": "condition",
        "label": "user.SubscriptionPlan?.IsUnlimitedTokens == true",
        "line": 41,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78,
        "detail": "if (user.SubscriptionPlan?.IsUnlimitedTokens == true)"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__true",
        "kind": "branch-true",
        "label": "true",
        "line": 41,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__false",
        "kind": "branch-false",
        "label": "false",
        "line": 41,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__merge",
        "kind": "statement",
        "label": "merge",
        "line": 41,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_43_handlerequirementasync_repository_read_43_7__linear",
        "kind": "db-read",
        "label": "Reads repository or persistence state",
        "line": 43,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.86,
        "detail": "context.Succeed(requirement);"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_44_handlerequirementasync_return_44_8__return",
        "kind": "return",
        "label": "Returns result",
        "line": 44,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "return;"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_47_branch_47__condition",
        "kind": "condition",
        "label": "user.AITokensUsed < user.AITokenLimit",
        "line": 47,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "If user is still under their AI token limit, succeed requirement and return"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_47_branch_47__true",
        "kind": "branch-true",
        "label": "context.Succeed(requirement)",
        "line": 47,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_47_branch_47__false",
        "kind": "branch-false",
        "label": "return",
        "line": 47,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_47_branch_47__merge",
        "kind": "statement",
        "label": "merge",
        "line": 47,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__condition",
        "kind": "condition",
        "label": "user.AITokensUsed < user.AITokenLimit",
        "line": 48,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78,
        "detail": "if (user.AITokensUsed < user.AITokenLimit)"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__true",
        "kind": "branch-true",
        "label": "true",
        "line": 48,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__false",
        "kind": "branch-false",
        "label": "false",
        "line": 48,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__merge",
        "kind": "statement",
        "label": "merge",
        "line": 48,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_50_handlerequirementasync_repository_read_50_10__linear",
        "kind": "db-read",
        "label": "Reads repository or persistence state",
        "line": 50,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.86,
        "detail": "context.Succeed(requirement);"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_51_handlerequirementasync_return_51_11__return",
        "kind": "return",
        "label": "Returns result",
        "line": 51,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "return;"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_52_implicit_fallback_52__linear",
        "kind": "statement",
        "label": "Deny by omission",
        "line": 52,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7,
        "detail": "If neither rule matched, method completes without calling context.Succeed — requirement is not granted"
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__implicit_return",
        "kind": "return",
        "label": "return",
        "line": 53,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.72,
        "detail": "Implicit method exit inferred from method boundary."
      }
    ],
    "edges": [
      {
        "id": "method:14jdxkg:handlerequirementasync__entry__method:14jdxkg:handlerequirementasync__action_24_handlerequirementasync_repository_read_24_0__linear",
        "from": "method:14jdxkg:handlerequirementasync__entry",
        "to": "method:14jdxkg:handlerequirementasync__action_24_handlerequirementasync_repository_read_24_0__linear",
        "kind": "next",
        "line": 24,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.86
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_24_handlerequirementasync_repository_read_24_0__linear__method:14jdxkg:handlerequirementasync__action_24_claim_read_24__linear",
        "from": "method:14jdxkg:handlerequirementasync__action_24_handlerequirementasync_repository_read_24_0__linear",
        "to": "method:14jdxkg:handlerequirementasync__action_24_claim_read_24__linear",
        "kind": "next",
        "line": 24,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_24_claim_read_24__linear__method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__condition",
        "from": "method:14jdxkg:handlerequirementasync__action_24_claim_read_24__linear",
        "to": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__condition",
        "kind": "next",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__condition__method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__true",
        "from": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__true",
        "kind": "condition-true",
        "label": "return (no authorization attempt)",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__condition__method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__false",
        "from": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__false",
        "kind": "condition-false",
        "label": "otherwise",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__true__method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__true",
        "to": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__merge",
        "kind": "next",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__false__method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__false",
        "to": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__merge",
        "kind": "next",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__merge__method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__condition",
        "from": "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__merge",
        "to": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__condition",
        "kind": "next",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__condition__method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__true",
        "from": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__true",
        "kind": "condition-true",
        "label": "true",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__condition__method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__false",
        "from": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__false",
        "kind": "condition-false",
        "label": "false",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__true__method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__true",
        "to": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__merge",
        "kind": "next",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__false__method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__false",
        "to": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__merge",
        "kind": "next",
        "line": 25,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__merge__method:14jdxkg:handlerequirementasync__action_27_handlerequirementasync_return_27_2__return",
        "from": "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__merge",
        "to": "method:14jdxkg:handlerequirementasync__action_27_handlerequirementasync_return_27_2__return",
        "kind": "return",
        "line": 27,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_27_handlerequirementasync_return_27_2__return__method:14jdxkg:handlerequirementasync__action_30_db_context_create_30__linear",
        "from": "method:14jdxkg:handlerequirementasync__action_27_handlerequirementasync_return_27_2__return",
        "to": "method:14jdxkg:handlerequirementasync__action_30_db_context_create_30__linear",
        "kind": "next",
        "line": 30,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_30_db_context_create_30__linear__method:14jdxkg:handlerequirementasync__action_31_handlerequirementasync_await_31_3__await",
        "from": "method:14jdxkg:handlerequirementasync__action_30_db_context_create_30__linear",
        "to": "method:14jdxkg:handlerequirementasync__action_31_handlerequirementasync_await_31_3__await",
        "kind": "next",
        "line": 31,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.81
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_31_handlerequirementasync_await_31_3__await__method:14jdxkg:handlerequirementasync__action_31_db_query_31__linear",
        "from": "method:14jdxkg:handlerequirementasync__action_31_handlerequirementasync_await_31_3__await",
        "to": "method:14jdxkg:handlerequirementasync__action_31_db_query_31__linear",
        "kind": "next",
        "line": 31,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_31_db_query_31__linear__method:14jdxkg:handlerequirementasync__action_35_null_check_35__linear",
        "from": "method:14jdxkg:handlerequirementasync__action_31_db_query_31__linear",
        "to": "method:14jdxkg:handlerequirementasync__action_35_null_check_35__linear",
        "kind": "next",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_null_check_35__linear__method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__condition",
        "from": "method:14jdxkg:handlerequirementasync__action_35_null_check_35__linear",
        "to": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__condition",
        "kind": "next",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__condition__method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__true",
        "from": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__true",
        "kind": "condition-true",
        "label": "true",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__condition__method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__false",
        "from": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__false",
        "kind": "condition-false",
        "label": "false",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__true__method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__true",
        "to": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__merge",
        "kind": "next",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__false__method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__false",
        "to": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__merge",
        "kind": "next",
        "line": 35,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__merge__method:14jdxkg:handlerequirementasync__action_37_handlerequirementasync_return_37_5__return",
        "from": "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__merge",
        "to": "method:14jdxkg:handlerequirementasync__action_37_handlerequirementasync_return_37_5__return",
        "kind": "return",
        "line": 37,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_37_handlerequirementasync_return_37_5__return__method:14jdxkg:handlerequirementasync__action_40_branch_40__condition",
        "from": "method:14jdxkg:handlerequirementasync__action_37_handlerequirementasync_return_37_5__return",
        "to": "method:14jdxkg:handlerequirementasync__action_40_branch_40__condition",
        "kind": "next",
        "line": 40,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_40_branch_40__condition__method:14jdxkg:handlerequirementasync__action_40_branch_40__true",
        "from": "method:14jdxkg:handlerequirementasync__action_40_branch_40__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_40_branch_40__true",
        "kind": "condition-true",
        "label": "context.Succeed(requirement)",
        "line": 40,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_40_branch_40__condition__method:14jdxkg:handlerequirementasync__action_40_branch_40__false",
        "from": "method:14jdxkg:handlerequirementasync__action_40_branch_40__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_40_branch_40__false",
        "kind": "condition-false",
        "label": "return",
        "line": 40,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_40_branch_40__true__method:14jdxkg:handlerequirementasync__action_40_branch_40__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_40_branch_40__true",
        "to": "method:14jdxkg:handlerequirementasync__action_40_branch_40__merge",
        "kind": "next",
        "line": 40,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_40_branch_40__false__method:14jdxkg:handlerequirementasync__action_40_branch_40__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_40_branch_40__false",
        "to": "method:14jdxkg:handlerequirementasync__action_40_branch_40__merge",
        "kind": "next",
        "line": 40,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_40_branch_40__merge__method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__condition",
        "from": "method:14jdxkg:handlerequirementasync__action_40_branch_40__merge",
        "to": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__condition",
        "kind": "next",
        "line": 41,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__condition__method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__true",
        "from": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__true",
        "kind": "condition-true",
        "label": "true",
        "line": 41,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__condition__method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__false",
        "from": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__false",
        "kind": "condition-false",
        "label": "false",
        "line": 41,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__true__method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__true",
        "to": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__merge",
        "kind": "next",
        "line": 41,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__false__method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__false",
        "to": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__merge",
        "kind": "next",
        "line": 41,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__merge__method:14jdxkg:handlerequirementasync__action_43_handlerequirementasync_repository_read_43_7__linear",
        "from": "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__merge",
        "to": "method:14jdxkg:handlerequirementasync__action_43_handlerequirementasync_repository_read_43_7__linear",
        "kind": "next",
        "line": 43,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.86
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_43_handlerequirementasync_repository_read_43_7__linear__method:14jdxkg:handlerequirementasync__action_44_handlerequirementasync_return_44_8__return",
        "from": "method:14jdxkg:handlerequirementasync__action_43_handlerequirementasync_repository_read_43_7__linear",
        "to": "method:14jdxkg:handlerequirementasync__action_44_handlerequirementasync_return_44_8__return",
        "kind": "return",
        "line": 44,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_44_handlerequirementasync_return_44_8__return__method:14jdxkg:handlerequirementasync__action_47_branch_47__condition",
        "from": "method:14jdxkg:handlerequirementasync__action_44_handlerequirementasync_return_44_8__return",
        "to": "method:14jdxkg:handlerequirementasync__action_47_branch_47__condition",
        "kind": "next",
        "line": 47,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_47_branch_47__condition__method:14jdxkg:handlerequirementasync__action_47_branch_47__true",
        "from": "method:14jdxkg:handlerequirementasync__action_47_branch_47__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_47_branch_47__true",
        "kind": "condition-true",
        "label": "context.Succeed(requirement)",
        "line": 47,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_47_branch_47__condition__method:14jdxkg:handlerequirementasync__action_47_branch_47__false",
        "from": "method:14jdxkg:handlerequirementasync__action_47_branch_47__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_47_branch_47__false",
        "kind": "condition-false",
        "label": "return",
        "line": 47,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_47_branch_47__true__method:14jdxkg:handlerequirementasync__action_47_branch_47__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_47_branch_47__true",
        "to": "method:14jdxkg:handlerequirementasync__action_47_branch_47__merge",
        "kind": "next",
        "line": 47,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_47_branch_47__false__method:14jdxkg:handlerequirementasync__action_47_branch_47__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_47_branch_47__false",
        "to": "method:14jdxkg:handlerequirementasync__action_47_branch_47__merge",
        "kind": "next",
        "line": 47,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_47_branch_47__merge__method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__condition",
        "from": "method:14jdxkg:handlerequirementasync__action_47_branch_47__merge",
        "to": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__condition",
        "kind": "next",
        "line": 48,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__condition__method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__true",
        "from": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__true",
        "kind": "condition-true",
        "label": "true",
        "line": 48,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__condition__method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__false",
        "from": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__condition",
        "to": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__false",
        "kind": "condition-false",
        "label": "false",
        "line": 48,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__true__method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__true",
        "to": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__merge",
        "kind": "next",
        "line": 48,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__false__method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__merge",
        "from": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__false",
        "to": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__merge",
        "kind": "next",
        "line": 48,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.78
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__merge__method:14jdxkg:handlerequirementasync__action_50_handlerequirementasync_repository_read_50_10__linear",
        "from": "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__merge",
        "to": "method:14jdxkg:handlerequirementasync__action_50_handlerequirementasync_repository_read_50_10__linear",
        "kind": "next",
        "line": 50,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.86
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_50_handlerequirementasync_repository_read_50_10__linear__method:14jdxkg:handlerequirementasync__action_51_handlerequirementasync_return_51_11__return",
        "from": "method:14jdxkg:handlerequirementasync__action_50_handlerequirementasync_repository_read_50_10__linear",
        "to": "method:14jdxkg:handlerequirementasync__action_51_handlerequirementasync_return_51_11__return",
        "kind": "return",
        "line": 51,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_51_handlerequirementasync_return_51_11__return__method:14jdxkg:handlerequirementasync__action_52_implicit_fallback_52__linear",
        "from": "method:14jdxkg:handlerequirementasync__action_51_handlerequirementasync_return_51_11__return",
        "to": "method:14jdxkg:handlerequirementasync__action_52_implicit_fallback_52__linear",
        "kind": "next",
        "line": 52,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.7
      },
      {
        "id": "method:14jdxkg:handlerequirementasync__action_52_implicit_fallback_52__linear__implicit_return",
        "from": "method:14jdxkg:handlerequirementasync__action_52_implicit_fallback_52__linear",
        "to": "method:14jdxkg:handlerequirementasync__implicit_return",
        "kind": "return",
        "line": 53,
        "sourcePath": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "confidence": 0.72
      }
    ],
    "jumpTargets": [],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [
      "method:14jdxkg:handlerequirementasync__action_25_guard_clause_25__merge",
      "method:14jdxkg:handlerequirementasync__action_25_handlerequirementasync_branch_25_1__merge",
      "method:14jdxkg:handlerequirementasync__action_35_handlerequirementasync_branch_35_4__merge",
      "method:14jdxkg:handlerequirementasync__action_40_branch_40__merge",
      "method:14jdxkg:handlerequirementasync__action_41_handlerequirementasync_branch_41_6__merge",
      "method:14jdxkg:handlerequirementasync__action_47_branch_47__merge",
      "method:14jdxkg:handlerequirementasync__action_48_handlerequirementasync_branch_48_9__merge"
    ],
    "language": "csharp",
    "confidence": 0.98,
    "lineSpan": {
      "start": 20,
      "end": 53
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.Application/Security/Authorization/ProUserHandler.cs",
        "line": 20,
        "summary": "Control-flow fragment extracted for method HandleRequirementAsync.",
        "kind": "file-summary"
      }
    ]
  }
]