[
  {
    "fragmentId": "method:8ggznb:identityservice__fragment",
    "ownerFileId": "file:b8uv8h:identityservice-cs",
    "ownerSymbolId": "method:8ggznb:identityservice",
    "ownerSymbolName": "IdentityService",
    "entryNodeId": "method:8ggznb:identityservice__entry",
    "exitNodeIds": [
      "method:8ggznb:identityservice__implicit_return"
    ],
    "nodes": [
      {
        "id": "method:8ggznb:identityservice__entry",
        "kind": "entry",
        "label": "IdentityService entry",
        "line": 23,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.99,
        "detail": "Constructs the identity service wiring HttpClient, native storage and optional auth state provider."
      },
      {
        "id": "method:8ggznb:identityservice__action_28_assign_28__linear",
        "kind": "statement",
        "label": "Store injected dependencies",
        "line": 28,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "_httpClient/_storageService/_authStateProvider assignments"
      },
      {
        "id": "method:8ggznb:identityservice__implicit_return",
        "kind": "return",
        "label": "return",
        "line": 31,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.72,
        "detail": "Implicit method exit inferred from method boundary."
      }
    ],
    "edges": [
      {
        "id": "method:8ggznb:identityservice__entry__method:8ggznb:identityservice__action_28_assign_28__linear",
        "from": "method:8ggznb:identityservice__entry",
        "to": "method:8ggznb:identityservice__action_28_assign_28__linear",
        "kind": "next",
        "line": 28,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:8ggznb:identityservice__action_28_assign_28__linear__implicit_return",
        "from": "method:8ggznb:identityservice__action_28_assign_28__linear",
        "to": "method:8ggznb:identityservice__implicit_return",
        "kind": "return",
        "line": 31,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.72
      }
    ],
    "jumpTargets": [],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [],
    "language": "csharp",
    "confidence": 0.76,
    "lineSpan": {
      "start": 23,
      "end": 31
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "line": 23,
        "summary": "Control-flow fragment extracted for method IdentityService.",
        "kind": "file-summary"
      }
    ]
  },
  {
    "fragmentId": "method:kf6qfg:registerasync__fragment",
    "ownerFileId": "file:b8uv8h:identityservice-cs",
    "ownerSymbolId": "method:kf6qfg:registerasync",
    "ownerSymbolName": "RegisterAsync",
    "entryNodeId": "method:kf6qfg:registerasync__entry",
    "exitNodeIds": [
      "method:kf6qfg:registerasync__action_38_registerasync_return_38_2__return",
      "method:kf6qfg:registerasync__action_42_registerasync_return_42_4__return"
    ],
    "nodes": [
      {
        "id": "method:kf6qfg:registerasync__entry",
        "kind": "entry",
        "label": "RegisterAsync entry",
        "line": 33,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.99,
        "detail": "Sends registration request to the backend and returns success/failure result."
      },
      {
        "id": "method:kf6qfg:registerasync__action_35_try_catch_35__linear",
        "kind": "statement",
        "label": "Network exception handling",
        "line": 35,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Catches Exception and returns a Result.Fail with caused-by error"
      },
      {
        "id": "method:kf6qfg:registerasync__action_35_registerasync_try_35_0__try",
        "kind": "try",
        "label": "Begins protected execution",
        "line": 35,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84,
        "detail": "try"
      },
      {
        "id": "method:kf6qfg:registerasync__action_37_registerasync_await_37_1__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 37,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var response = await _httpClient.PostAsJsonAsync(\"identity/register\", new { email, password });"
      },
      {
        "id": "method:kf6qfg:registerasync__action_37_external_call_37__linear",
        "kind": "http-call",
        "label": "POST register",
        "line": 37,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Calls HttpClient.PostAsJsonAsync to 'identity/register' (framework call omitted from calls list)"
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_registerasync_return_38_2__return",
        "kind": "return",
        "label": "Returns result",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return response.IsSuccessStatusCode ? Result.Ok() : Result.Fail(\"Rejestracja nie powiodła się.\");"
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_branch_38__condition",
        "kind": "condition",
        "label": "response.IsSuccessStatusCode",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Returns Result.Ok() on success, Result.Fail(...) on failure"
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_branch_38__true",
        "kind": "branch-true",
        "label": "ok",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_branch_38__false",
        "kind": "branch-false",
        "label": "fail",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_branch_38__merge",
        "kind": "statement",
        "label": "merge",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_40_registerasync_catch_40_3__catch",
        "kind": "catch",
        "label": "catch Exception ex",
        "line": 40,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86,
        "detail": "catch (Exception ex)"
      },
      {
        "id": "method:kf6qfg:registerasync__action_42_registerasync_return_42_4__return",
        "kind": "return",
        "label": "Returns result",
        "line": 42,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Fail(new Error(\"Błąd sieci podczas rejestracji.\").CausedBy(ex));"
      }
    ],
    "edges": [
      {
        "id": "method:kf6qfg:registerasync__entry__method:kf6qfg:registerasync__action_35_try_catch_35__linear",
        "from": "method:kf6qfg:registerasync__entry",
        "to": "method:kf6qfg:registerasync__action_35_try_catch_35__linear",
        "kind": "next",
        "line": 35,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_35_try_catch_35__linear__method:kf6qfg:registerasync__action_35_registerasync_try_35_0__try",
        "from": "method:kf6qfg:registerasync__action_35_try_catch_35__linear",
        "to": "method:kf6qfg:registerasync__action_35_registerasync_try_35_0__try",
        "kind": "next",
        "line": 35,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:kf6qfg:registerasync__action_35_registerasync_try_35_0__try__method:kf6qfg:registerasync__action_37_registerasync_await_37_1__await",
        "from": "method:kf6qfg:registerasync__action_35_registerasync_try_35_0__try",
        "to": "method:kf6qfg:registerasync__action_37_registerasync_await_37_1__await",
        "kind": "next",
        "line": 37,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:kf6qfg:registerasync__action_37_registerasync_await_37_1__await__method:kf6qfg:registerasync__action_37_external_call_37__linear",
        "from": "method:kf6qfg:registerasync__action_37_registerasync_await_37_1__await",
        "to": "method:kf6qfg:registerasync__action_37_external_call_37__linear",
        "kind": "next",
        "line": 37,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_37_external_call_37__linear__method:kf6qfg:registerasync__action_38_registerasync_return_38_2__return",
        "from": "method:kf6qfg:registerasync__action_37_external_call_37__linear",
        "to": "method:kf6qfg:registerasync__action_38_registerasync_return_38_2__return",
        "kind": "return",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_registerasync_return_38_2__return__method:kf6qfg:registerasync__action_38_branch_38__condition",
        "from": "method:kf6qfg:registerasync__action_38_registerasync_return_38_2__return",
        "to": "method:kf6qfg:registerasync__action_38_branch_38__condition",
        "kind": "next",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_branch_38__condition__method:kf6qfg:registerasync__action_38_branch_38__true",
        "from": "method:kf6qfg:registerasync__action_38_branch_38__condition",
        "to": "method:kf6qfg:registerasync__action_38_branch_38__true",
        "kind": "condition-true",
        "label": "ok",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_branch_38__condition__method:kf6qfg:registerasync__action_38_branch_38__false",
        "from": "method:kf6qfg:registerasync__action_38_branch_38__condition",
        "to": "method:kf6qfg:registerasync__action_38_branch_38__false",
        "kind": "condition-false",
        "label": "fail",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_branch_38__true__method:kf6qfg:registerasync__action_38_branch_38__merge",
        "from": "method:kf6qfg:registerasync__action_38_branch_38__true",
        "to": "method:kf6qfg:registerasync__action_38_branch_38__merge",
        "kind": "next",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_branch_38__false__method:kf6qfg:registerasync__action_38_branch_38__merge",
        "from": "method:kf6qfg:registerasync__action_38_branch_38__false",
        "to": "method:kf6qfg:registerasync__action_38_branch_38__merge",
        "kind": "next",
        "line": 38,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:kf6qfg:registerasync__action_38_branch_38__merge__method:kf6qfg:registerasync__action_40_registerasync_catch_40_3__catch",
        "from": "method:kf6qfg:registerasync__action_38_branch_38__merge",
        "to": "method:kf6qfg:registerasync__action_40_registerasync_catch_40_3__catch",
        "kind": "exception",
        "line": 40,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86
      },
      {
        "id": "method:kf6qfg:registerasync__action_40_registerasync_catch_40_3__catch__method:kf6qfg:registerasync__action_42_registerasync_return_42_4__return",
        "from": "method:kf6qfg:registerasync__action_40_registerasync_catch_40_3__catch",
        "to": "method:kf6qfg:registerasync__action_42_registerasync_return_42_4__return",
        "kind": "return",
        "line": 42,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      }
    ],
    "jumpTargets": [],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [
      "method:kf6qfg:registerasync__action_38_branch_38__merge"
    ],
    "language": "csharp",
    "confidence": 0.98,
    "lineSpan": {
      "start": 33,
      "end": 44
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "line": 33,
        "summary": "Control-flow fragment extracted for method RegisterAsync.",
        "kind": "file-summary"
      }
    ]
  },
  {
    "fragmentId": "method:b6asoe:loginasync__fragment",
    "ownerFileId": "file:b8uv8h:identityservice-cs",
    "ownerSymbolId": "method:b6asoe:loginasync",
    "ownerSymbolName": "LoginAsync",
    "entryNodeId": "method:b6asoe:loginasync__entry",
    "exitNodeIds": [
      "method:b6asoe:loginasync__action_62_loginasync_return_62_6__return",
      "method:b6asoe:loginasync__action_94_loginasync_return_94_21__return",
      "method:b6asoe:loginasync__action_94_return_94__return",
      "method:b6asoe:loginasync__action_96_loginasync_return_96_22__return",
      "method:b6asoe:loginasync__action_100_loginasync_return_100_24__return"
    ],
    "nodes": [
      {
        "id": "method:b6asoe:loginasync__entry",
        "kind": "entry",
        "label": "LoginAsync entry",
        "line": 46,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.99,
        "detail": "Performs login against backend, stores tokens, invalidates auth state, fetches profile and persists profile metadata; returns success/failure."
      },
      {
        "id": "method:b6asoe:loginasync__action_48_try_catch_48__linear",
        "kind": "statement",
        "label": "Entire login flow guarded",
        "line": 48,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Top-level try/catch returns network error Result.Fail on exception"
      },
      {
        "id": "method:b6asoe:loginasync__action_48_loginasync_try_48_0__try",
        "kind": "try",
        "label": "Begins protected execution",
        "line": 48,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84,
        "detail": "try"
      },
      {
        "id": "method:b6asoe:loginasync__action_50_loginasync_await_50_1__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 50,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var response = await _httpClient.PostAsJsonAsync(\"identity/login\", new { email, password });"
      },
      {
        "id": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__condition",
        "kind": "condition",
        "label": "response.IsSuccessStatusCode",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (response.IsSuccessStatusCode)"
      },
      {
        "id": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__true",
        "kind": "branch-true",
        "label": "true",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__false",
        "kind": "branch-false",
        "label": "false",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__merge",
        "kind": "statement",
        "label": "merge",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_52_branch_52__condition",
        "kind": "condition",
        "label": "response.IsSuccessStatusCode",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_52_branch_52__true",
        "kind": "branch-true",
        "label": "process tokens and profile",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_52_branch_52__false",
        "kind": "branch-false",
        "label": "return invalid credentials",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_52_branch_52__merge",
        "kind": "statement",
        "label": "merge",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_56_try_catch_56__linear",
        "kind": "statement",
        "label": "Parse JSON response",
        "line": 56,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Catches JsonException and returns Result.Fail for server response parsing error"
      },
      {
        "id": "method:b6asoe:loginasync__action_56_loginasync_try_56_3__try",
        "kind": "try",
        "label": "Begins protected execution",
        "line": 56,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84,
        "detail": "try"
      },
      {
        "id": "method:b6asoe:loginasync__action_58_loginasync_await_58_4__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 58,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "result = await response.Content.ReadFromJsonAsync<LoginResponse>();"
      },
      {
        "id": "method:b6asoe:loginasync__action_60_loginasync_catch_60_5__catch",
        "kind": "catch",
        "label": "catch System.Text.Json.JsonException ex",
        "line": 60,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86,
        "detail": "catch (System.Text.Json.JsonException ex)"
      },
      {
        "id": "method:b6asoe:loginasync__action_62_loginasync_return_62_6__return",
        "kind": "return",
        "label": "Returns result",
        "line": 62,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Fail(new Error(\"Błąd przetwarzania odpowiedzi serwera.\").CausedBy(ex));"
      },
      {
        "id": "method:b6asoe:loginasync__action_65_guard_clause_65__condition",
        "kind": "condition",
        "label": "result != null && !string.IsNullOrEmpty(result.AccessToken)",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_65_guard_clause_65__true",
        "kind": "branch-true",
        "label": "save tokens",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_65_guard_clause_65__false",
        "kind": "branch-false",
        "label": "skip token persistence",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_65_guard_clause_65__merge",
        "kind": "statement",
        "label": "merge",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__condition",
        "kind": "condition",
        "label": "result != null && !string.IsNullOrEmpty(result.AccessToken)",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (result != null && !string.IsNullOrEmpty(result.AccessToken))"
      },
      {
        "id": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__true",
        "kind": "branch-true",
        "label": "true",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__false",
        "kind": "branch-false",
        "label": "false",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__merge",
        "kind": "statement",
        "label": "merge",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_67_loginasync_await_67_8__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 67,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(TokenKey, result.AccessToken);"
      },
      {
        "id": "method:b6asoe:loginasync__call_67_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 67,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "TokenKey, result.AccessToken"
      },
      {
        "id": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__condition",
        "kind": "condition",
        "label": "!string.IsNullOrEmpty(result.RefreshToken)",
        "line": 68,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (!string.IsNullOrEmpty(result.RefreshToken))"
      },
      {
        "id": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__true",
        "kind": "branch-true",
        "label": "true",
        "line": 68,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__false",
        "kind": "branch-false",
        "label": "false",
        "line": 68,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__merge",
        "kind": "statement",
        "label": "merge",
        "line": 68,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_70_loginasync_await_70_10__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 70,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(RefreshTokenKey, result.RefreshToken);"
      },
      {
        "id": "method:b6asoe:loginasync__call_70_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 70,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "RefreshTokenKey, result.RefreshToken"
      },
      {
        "id": "method:b6asoe:loginasync__action_74_state_change_74__linear",
        "kind": "statement",
        "label": "Invalidate auth state and notify listeners",
        "line": 74,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Clears provider cache and invokes OnStateInvalidated"
      },
      {
        "id": "method:b6asoe:loginasync__call_74_NexusAuthenticationStateProvider_ClearCache",
        "kind": "call",
        "label": "NexusAuthenticationStateProvider.ClearCache",
        "line": 74,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "cast _authStateProvider and call ClearCache"
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_await_75_12__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "if (OnStateInvalidated != null) await OnStateInvalidated.Invoke();"
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__condition",
        "kind": "condition",
        "label": "OnStateInvalidated != null) await OnStateInvalidated.Invoke(",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (OnStateInvalidated != null) await OnStateInvalidated.Invoke();"
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__true",
        "kind": "branch-true",
        "label": "true",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__false",
        "kind": "branch-false",
        "label": "false",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__merge",
        "kind": "statement",
        "label": "merge",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__call_75_OnStateInvalidated_Invoke",
        "kind": "call",
        "label": "OnStateInvalidated.Invoke",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "invoke event if not null"
      },
      {
        "id": "method:b6asoe:loginasync__action_77_loginasync_await_77_13__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 77,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var profileResult = await GetProfileAsync();"
      },
      {
        "id": "method:b6asoe:loginasync__action_77_orchestration_77__linear",
        "kind": "statement",
        "label": "Fetch and persist profile after login",
        "line": 77,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Calls GetProfileAsync and on success persists email/tenant/roles, notifies auth provider; fallback notification if profile fetch fails"
      },
      {
        "id": "method:b6asoe:loginasync__call_77_GetProfileAsync",
        "kind": "call",
        "label": "GetProfileAsync",
        "line": 77,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "no parameters"
      },
      {
        "id": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__condition",
        "kind": "condition",
        "label": "profileResult.IsSuccess",
        "line": 78,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (profileResult.IsSuccess)"
      },
      {
        "id": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__true",
        "kind": "branch-true",
        "label": "true",
        "line": 78,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__false",
        "kind": "branch-false",
        "label": "false",
        "line": 78,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__merge",
        "kind": "statement",
        "label": "merge",
        "line": 78,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_81_loginasync_await_81_15__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 81,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserEmail, profile.Email);"
      },
      {
        "id": "method:b6asoe:loginasync__call_81_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 81,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserEmail, profile.Email"
      },
      {
        "id": "method:b6asoe:loginasync__action_82_loginasync_await_82_16__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 82,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserTenant, profile.TenantId.ToString());"
      },
      {
        "id": "method:b6asoe:loginasync__call_82_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 82,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserTenant, profile.TenantId.ToString()"
      },
      {
        "id": "method:b6asoe:loginasync__action_85_loginasync_await_85_17__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 85,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserRoles, rolesStr);"
      },
      {
        "id": "method:b6asoe:loginasync__call_85_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 85,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserRoles, rolesStr"
      },
      {
        "id": "method:b6asoe:loginasync__action_87_loginasync_notification_87_18__linear",
        "kind": "publish-event",
        "label": "Sends notification",
        "line": 87,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.83,
        "detail": "(_authStateProvider as NexusAuthenticationStateProvider)?.NotifyUserAuthentication(profile.Email, profile.TenantId.ToString(), rolesStr);"
      },
      {
        "id": "method:b6asoe:loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "kind": "call",
        "label": "NexusAuthenticationStateProvider.NotifyUserAuthentication",
        "line": 87,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "profile.Email, profile.TenantId.ToString(), rolesStr (or fallback email/unknown)"
      },
      {
        "id": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__condition",
        "kind": "condition",
        "label": "Falls back to alternate path",
        "line": 89,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84,
        "detail": "else"
      },
      {
        "id": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__true",
        "kind": "branch-true",
        "label": "fallback",
        "line": 89,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__false",
        "kind": "branch-false",
        "label": "otherwise",
        "line": 89,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__merge",
        "kind": "statement",
        "label": "merge",
        "line": 89,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:b6asoe:loginasync__action_91_loginasync_notification_91_20__linear",
        "kind": "publish-event",
        "label": "Sends notification",
        "line": 91,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.83,
        "detail": "(_authStateProvider as NexusAuthenticationStateProvider)?.NotifyUserAuthentication(email, \"unknown\", \"\");"
      },
      {
        "id": "method:b6asoe:loginasync__action_94_loginasync_return_94_21__return",
        "kind": "return",
        "label": "Returns result",
        "line": 94,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Ok();"
      },
      {
        "id": "method:b6asoe:loginasync__action_94_return_94__return",
        "kind": "return",
        "label": "Return success/failure",
        "line": 94,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Returns Result.Ok() on processed login, Result.Fail(...) on bad credentials"
      },
      {
        "id": "method:b6asoe:loginasync__action_96_loginasync_return_96_22__return",
        "kind": "return",
        "label": "Returns result",
        "line": 96,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Fail(\"Nieprawidłowy e-mail lub hasło.\");"
      },
      {
        "id": "method:b6asoe:loginasync__action_98_loginasync_catch_98_23__catch",
        "kind": "catch",
        "label": "catch Exception ex",
        "line": 98,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86,
        "detail": "catch (Exception ex)"
      },
      {
        "id": "method:b6asoe:loginasync__action_100_loginasync_return_100_24__return",
        "kind": "return",
        "label": "Returns result",
        "line": 100,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Fail(new Error(\"Błąd połączenia z serwerem.\").CausedBy(ex));"
      }
    ],
    "edges": [
      {
        "id": "method:b6asoe:loginasync__entry__method:b6asoe:loginasync__action_48_try_catch_48__linear",
        "from": "method:b6asoe:loginasync__entry",
        "to": "method:b6asoe:loginasync__action_48_try_catch_48__linear",
        "kind": "next",
        "line": 48,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_48_try_catch_48__linear__method:b6asoe:loginasync__action_48_loginasync_try_48_0__try",
        "from": "method:b6asoe:loginasync__action_48_try_catch_48__linear",
        "to": "method:b6asoe:loginasync__action_48_loginasync_try_48_0__try",
        "kind": "next",
        "line": 48,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:b6asoe:loginasync__action_48_loginasync_try_48_0__try__method:b6asoe:loginasync__action_50_loginasync_await_50_1__await",
        "from": "method:b6asoe:loginasync__action_48_loginasync_try_48_0__try",
        "to": "method:b6asoe:loginasync__action_50_loginasync_await_50_1__await",
        "kind": "next",
        "line": 50,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:b6asoe:loginasync__action_50_loginasync_await_50_1__await__method:b6asoe:loginasync__action_52_loginasync_branch_52_2__condition",
        "from": "method:b6asoe:loginasync__action_50_loginasync_await_50_1__await",
        "to": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__condition",
        "kind": "next",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__condition__method:b6asoe:loginasync__action_52_loginasync_branch_52_2__true",
        "from": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__condition",
        "to": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__true",
        "kind": "condition-true",
        "label": "true",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__condition__method:b6asoe:loginasync__action_52_loginasync_branch_52_2__false",
        "from": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__condition",
        "to": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__false",
        "kind": "condition-false",
        "label": "false",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__true__method:b6asoe:loginasync__action_52_loginasync_branch_52_2__merge",
        "from": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__true",
        "to": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__merge",
        "kind": "next",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__false__method:b6asoe:loginasync__action_52_loginasync_branch_52_2__merge",
        "from": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__false",
        "to": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__merge",
        "kind": "next",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__merge__method:b6asoe:loginasync__action_52_branch_52__condition",
        "from": "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__merge",
        "to": "method:b6asoe:loginasync__action_52_branch_52__condition",
        "kind": "next",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_52_branch_52__condition__method:b6asoe:loginasync__action_52_branch_52__true",
        "from": "method:b6asoe:loginasync__action_52_branch_52__condition",
        "to": "method:b6asoe:loginasync__action_52_branch_52__true",
        "kind": "condition-true",
        "label": "process tokens and profile",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_52_branch_52__condition__method:b6asoe:loginasync__action_52_branch_52__false",
        "from": "method:b6asoe:loginasync__action_52_branch_52__condition",
        "to": "method:b6asoe:loginasync__action_52_branch_52__false",
        "kind": "condition-false",
        "label": "return invalid credentials",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_52_branch_52__true__method:b6asoe:loginasync__action_52_branch_52__merge",
        "from": "method:b6asoe:loginasync__action_52_branch_52__true",
        "to": "method:b6asoe:loginasync__action_52_branch_52__merge",
        "kind": "next",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_52_branch_52__false__method:b6asoe:loginasync__action_52_branch_52__merge",
        "from": "method:b6asoe:loginasync__action_52_branch_52__false",
        "to": "method:b6asoe:loginasync__action_52_branch_52__merge",
        "kind": "next",
        "line": 52,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_52_branch_52__merge__method:b6asoe:loginasync__action_56_try_catch_56__linear",
        "from": "method:b6asoe:loginasync__action_52_branch_52__merge",
        "to": "method:b6asoe:loginasync__action_56_try_catch_56__linear",
        "kind": "next",
        "line": 56,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_56_try_catch_56__linear__method:b6asoe:loginasync__action_56_loginasync_try_56_3__try",
        "from": "method:b6asoe:loginasync__action_56_try_catch_56__linear",
        "to": "method:b6asoe:loginasync__action_56_loginasync_try_56_3__try",
        "kind": "next",
        "line": 56,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:b6asoe:loginasync__action_56_loginasync_try_56_3__try__method:b6asoe:loginasync__action_58_loginasync_await_58_4__await",
        "from": "method:b6asoe:loginasync__action_56_loginasync_try_56_3__try",
        "to": "method:b6asoe:loginasync__action_58_loginasync_await_58_4__await",
        "kind": "next",
        "line": 58,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:b6asoe:loginasync__action_58_loginasync_await_58_4__await__method:b6asoe:loginasync__action_60_loginasync_catch_60_5__catch",
        "from": "method:b6asoe:loginasync__action_58_loginasync_await_58_4__await",
        "to": "method:b6asoe:loginasync__action_60_loginasync_catch_60_5__catch",
        "kind": "exception",
        "line": 60,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86
      },
      {
        "id": "method:b6asoe:loginasync__action_60_loginasync_catch_60_5__catch__method:b6asoe:loginasync__action_62_loginasync_return_62_6__return",
        "from": "method:b6asoe:loginasync__action_60_loginasync_catch_60_5__catch",
        "to": "method:b6asoe:loginasync__action_62_loginasync_return_62_6__return",
        "kind": "return",
        "line": 62,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_62_loginasync_return_62_6__return__method:b6asoe:loginasync__action_65_guard_clause_65__condition",
        "from": "method:b6asoe:loginasync__action_62_loginasync_return_62_6__return",
        "to": "method:b6asoe:loginasync__action_65_guard_clause_65__condition",
        "kind": "next",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_65_guard_clause_65__condition__method:b6asoe:loginasync__action_65_guard_clause_65__true",
        "from": "method:b6asoe:loginasync__action_65_guard_clause_65__condition",
        "to": "method:b6asoe:loginasync__action_65_guard_clause_65__true",
        "kind": "condition-true",
        "label": "save tokens",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_65_guard_clause_65__condition__method:b6asoe:loginasync__action_65_guard_clause_65__false",
        "from": "method:b6asoe:loginasync__action_65_guard_clause_65__condition",
        "to": "method:b6asoe:loginasync__action_65_guard_clause_65__false",
        "kind": "condition-false",
        "label": "skip token persistence",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_65_guard_clause_65__true__method:b6asoe:loginasync__action_65_guard_clause_65__merge",
        "from": "method:b6asoe:loginasync__action_65_guard_clause_65__true",
        "to": "method:b6asoe:loginasync__action_65_guard_clause_65__merge",
        "kind": "next",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_65_guard_clause_65__false__method:b6asoe:loginasync__action_65_guard_clause_65__merge",
        "from": "method:b6asoe:loginasync__action_65_guard_clause_65__false",
        "to": "method:b6asoe:loginasync__action_65_guard_clause_65__merge",
        "kind": "next",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_65_guard_clause_65__merge__method:b6asoe:loginasync__action_65_loginasync_branch_65_7__condition",
        "from": "method:b6asoe:loginasync__action_65_guard_clause_65__merge",
        "to": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__condition",
        "kind": "next",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__condition__method:b6asoe:loginasync__action_65_loginasync_branch_65_7__true",
        "from": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__condition",
        "to": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__true",
        "kind": "condition-true",
        "label": "true",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__condition__method:b6asoe:loginasync__action_65_loginasync_branch_65_7__false",
        "from": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__condition",
        "to": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__false",
        "kind": "condition-false",
        "label": "false",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__true__method:b6asoe:loginasync__action_65_loginasync_branch_65_7__merge",
        "from": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__true",
        "to": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__merge",
        "kind": "next",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__false__method:b6asoe:loginasync__action_65_loginasync_branch_65_7__merge",
        "from": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__false",
        "to": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__merge",
        "kind": "next",
        "line": 65,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__merge__method:b6asoe:loginasync__action_67_loginasync_await_67_8__await",
        "from": "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__merge",
        "to": "method:b6asoe:loginasync__action_67_loginasync_await_67_8__await",
        "kind": "next",
        "line": 67,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:b6asoe:loginasync__action_67_loginasync_await_67_8__await__call_method:b6asoe:loginasync__call_67_INativeStorageService_SaveSecureString",
        "from": "method:b6asoe:loginasync__action_67_loginasync_await_67_8__await",
        "to": "method:b6asoe:loginasync__call_67_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "TokenKey, result.AccessToken",
        "line": 67,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:b6asoe:loginasync__call_67_INativeStorageService_SaveSecureString__method:b6asoe:loginasync__action_68_loginasync_branch_68_9__condition",
        "from": "method:b6asoe:loginasync__call_67_INativeStorageService_SaveSecureString",
        "to": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__condition",
        "kind": "next",
        "line": 68,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__condition__method:b6asoe:loginasync__action_68_loginasync_branch_68_9__true",
        "from": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__condition",
        "to": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__true",
        "kind": "condition-true",
        "label": "true",
        "line": 68,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__condition__method:b6asoe:loginasync__action_68_loginasync_branch_68_9__false",
        "from": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__condition",
        "to": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__false",
        "kind": "condition-false",
        "label": "false",
        "line": 68,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__true__method:b6asoe:loginasync__action_68_loginasync_branch_68_9__merge",
        "from": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__true",
        "to": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__merge",
        "kind": "next",
        "line": 68,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__false__method:b6asoe:loginasync__action_68_loginasync_branch_68_9__merge",
        "from": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__false",
        "to": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__merge",
        "kind": "next",
        "line": 68,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__merge__method:b6asoe:loginasync__action_70_loginasync_await_70_10__await",
        "from": "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__merge",
        "to": "method:b6asoe:loginasync__action_70_loginasync_await_70_10__await",
        "kind": "next",
        "line": 70,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:b6asoe:loginasync__action_70_loginasync_await_70_10__await__call_method:b6asoe:loginasync__call_70_INativeStorageService_SaveSecureString",
        "from": "method:b6asoe:loginasync__action_70_loginasync_await_70_10__await",
        "to": "method:b6asoe:loginasync__call_70_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "RefreshTokenKey, result.RefreshToken",
        "line": 70,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:b6asoe:loginasync__call_70_INativeStorageService_SaveSecureString__method:b6asoe:loginasync__action_74_state_change_74__linear",
        "from": "method:b6asoe:loginasync__call_70_INativeStorageService_SaveSecureString",
        "to": "method:b6asoe:loginasync__action_74_state_change_74__linear",
        "kind": "next",
        "line": 74,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_74_state_change_74__linear__call_method:b6asoe:loginasync__call_74_NexusAuthenticationStateProvider_ClearCache",
        "from": "method:b6asoe:loginasync__action_74_state_change_74__linear",
        "to": "method:b6asoe:loginasync__call_74_NexusAuthenticationStateProvider_ClearCache",
        "kind": "call",
        "label": "cast _authStateProvider and call ClearCache",
        "line": 74,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:b6asoe:loginasync__call_74_NexusAuthenticationStateProvider_ClearCache__method:b6asoe:loginasync__action_75_loginasync_await_75_12__await",
        "from": "method:b6asoe:loginasync__call_74_NexusAuthenticationStateProvider_ClearCache",
        "to": "method:b6asoe:loginasync__action_75_loginasync_await_75_12__await",
        "kind": "next",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_await_75_12__await__method:b6asoe:loginasync__action_75_loginasync_branch_75_11__condition",
        "from": "method:b6asoe:loginasync__action_75_loginasync_await_75_12__await",
        "to": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__condition",
        "kind": "next",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__condition__method:b6asoe:loginasync__action_75_loginasync_branch_75_11__true",
        "from": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__condition",
        "to": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__true",
        "kind": "condition-true",
        "label": "true",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__condition__method:b6asoe:loginasync__action_75_loginasync_branch_75_11__false",
        "from": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__condition",
        "to": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__false",
        "kind": "condition-false",
        "label": "false",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__true__method:b6asoe:loginasync__action_75_loginasync_branch_75_11__merge",
        "from": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__true",
        "to": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__merge",
        "kind": "next",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__false__method:b6asoe:loginasync__action_75_loginasync_branch_75_11__merge",
        "from": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__false",
        "to": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__merge",
        "kind": "next",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__merge__call_method:b6asoe:loginasync__call_75_OnStateInvalidated_Invoke",
        "from": "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__merge",
        "to": "method:b6asoe:loginasync__call_75_OnStateInvalidated_Invoke",
        "kind": "call",
        "label": "invoke event if not null",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:b6asoe:loginasync__call_75_OnStateInvalidated_Invoke__method:b6asoe:loginasync__action_77_loginasync_await_77_13__await",
        "from": "method:b6asoe:loginasync__call_75_OnStateInvalidated_Invoke",
        "to": "method:b6asoe:loginasync__action_77_loginasync_await_77_13__await",
        "kind": "next",
        "line": 77,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:b6asoe:loginasync__action_77_loginasync_await_77_13__await__method:b6asoe:loginasync__action_77_orchestration_77__linear",
        "from": "method:b6asoe:loginasync__action_77_loginasync_await_77_13__await",
        "to": "method:b6asoe:loginasync__action_77_orchestration_77__linear",
        "kind": "next",
        "line": 77,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_77_orchestration_77__linear__call_method:b6asoe:loginasync__call_77_GetProfileAsync",
        "from": "method:b6asoe:loginasync__action_77_orchestration_77__linear",
        "to": "method:b6asoe:loginasync__call_77_GetProfileAsync",
        "kind": "call",
        "label": "no parameters",
        "line": 77,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:b6asoe:loginasync__call_77_GetProfileAsync__method:b6asoe:loginasync__action_78_loginasync_branch_78_14__condition",
        "from": "method:b6asoe:loginasync__call_77_GetProfileAsync",
        "to": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__condition",
        "kind": "next",
        "line": 78,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__condition__method:b6asoe:loginasync__action_78_loginasync_branch_78_14__true",
        "from": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__condition",
        "to": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__true",
        "kind": "condition-true",
        "label": "true",
        "line": 78,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__condition__method:b6asoe:loginasync__action_78_loginasync_branch_78_14__false",
        "from": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__condition",
        "to": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__false",
        "kind": "condition-false",
        "label": "false",
        "line": 78,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__true__method:b6asoe:loginasync__action_78_loginasync_branch_78_14__merge",
        "from": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__true",
        "to": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__merge",
        "kind": "next",
        "line": 78,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__false__method:b6asoe:loginasync__action_78_loginasync_branch_78_14__merge",
        "from": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__false",
        "to": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__merge",
        "kind": "next",
        "line": 78,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__merge__method:b6asoe:loginasync__action_81_loginasync_await_81_15__await",
        "from": "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__merge",
        "to": "method:b6asoe:loginasync__action_81_loginasync_await_81_15__await",
        "kind": "next",
        "line": 81,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:b6asoe:loginasync__action_81_loginasync_await_81_15__await__call_method:b6asoe:loginasync__call_81_INativeStorageService_SaveSecureString",
        "from": "method:b6asoe:loginasync__action_81_loginasync_await_81_15__await",
        "to": "method:b6asoe:loginasync__call_81_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserEmail, profile.Email",
        "line": 81,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:b6asoe:loginasync__call_81_INativeStorageService_SaveSecureString__method:b6asoe:loginasync__action_82_loginasync_await_82_16__await",
        "from": "method:b6asoe:loginasync__call_81_INativeStorageService_SaveSecureString",
        "to": "method:b6asoe:loginasync__action_82_loginasync_await_82_16__await",
        "kind": "next",
        "line": 82,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:b6asoe:loginasync__action_82_loginasync_await_82_16__await__call_method:b6asoe:loginasync__call_82_INativeStorageService_SaveSecureString",
        "from": "method:b6asoe:loginasync__action_82_loginasync_await_82_16__await",
        "to": "method:b6asoe:loginasync__call_82_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserTenant, profile.TenantId.ToString()",
        "line": 82,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:b6asoe:loginasync__call_82_INativeStorageService_SaveSecureString__method:b6asoe:loginasync__action_85_loginasync_await_85_17__await",
        "from": "method:b6asoe:loginasync__call_82_INativeStorageService_SaveSecureString",
        "to": "method:b6asoe:loginasync__action_85_loginasync_await_85_17__await",
        "kind": "next",
        "line": 85,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:b6asoe:loginasync__action_85_loginasync_await_85_17__await__call_method:b6asoe:loginasync__call_85_INativeStorageService_SaveSecureString",
        "from": "method:b6asoe:loginasync__action_85_loginasync_await_85_17__await",
        "to": "method:b6asoe:loginasync__call_85_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserRoles, rolesStr",
        "line": 85,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:b6asoe:loginasync__call_85_INativeStorageService_SaveSecureString__method:b6asoe:loginasync__action_87_loginasync_notification_87_18__linear",
        "from": "method:b6asoe:loginasync__call_85_INativeStorageService_SaveSecureString",
        "to": "method:b6asoe:loginasync__action_87_loginasync_notification_87_18__linear",
        "kind": "next",
        "line": 87,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.83
      },
      {
        "id": "method:b6asoe:loginasync__action_87_loginasync_notification_87_18__linear__call_method:b6asoe:loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "from": "method:b6asoe:loginasync__action_87_loginasync_notification_87_18__linear",
        "to": "method:b6asoe:loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "kind": "call",
        "label": "profile.Email, profile.TenantId.ToString(), rolesStr (or fallback email/unknown)",
        "line": 87,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:b6asoe:loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication__method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__condition",
        "from": "method:b6asoe:loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "to": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__condition",
        "kind": "fallback",
        "line": 89,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__condition__method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__true",
        "from": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__condition",
        "to": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__true",
        "kind": "condition-true",
        "label": "fallback",
        "line": 89,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__condition__method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__false",
        "from": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__condition",
        "to": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__false",
        "kind": "condition-false",
        "label": "otherwise",
        "line": 89,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__true__method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__merge",
        "from": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__true",
        "to": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__merge",
        "kind": "next",
        "line": 89,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__false__method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__merge",
        "from": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__false",
        "to": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__merge",
        "kind": "next",
        "line": 89,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__merge__method:b6asoe:loginasync__action_91_loginasync_notification_91_20__linear",
        "from": "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__merge",
        "to": "method:b6asoe:loginasync__action_91_loginasync_notification_91_20__linear",
        "kind": "next",
        "line": 91,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.83
      },
      {
        "id": "method:b6asoe:loginasync__action_91_loginasync_notification_91_20__linear__method:b6asoe:loginasync__action_94_loginasync_return_94_21__return",
        "from": "method:b6asoe:loginasync__action_91_loginasync_notification_91_20__linear",
        "to": "method:b6asoe:loginasync__action_94_loginasync_return_94_21__return",
        "kind": "return",
        "line": 94,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_94_loginasync_return_94_21__return__method:b6asoe:loginasync__action_94_return_94__return",
        "from": "method:b6asoe:loginasync__action_94_loginasync_return_94_21__return",
        "to": "method:b6asoe:loginasync__action_94_return_94__return",
        "kind": "return",
        "line": 94,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_94_return_94__return__method:b6asoe:loginasync__action_96_loginasync_return_96_22__return",
        "from": "method:b6asoe:loginasync__action_94_return_94__return",
        "to": "method:b6asoe:loginasync__action_96_loginasync_return_96_22__return",
        "kind": "return",
        "line": 96,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:b6asoe:loginasync__action_96_loginasync_return_96_22__return__method:b6asoe:loginasync__action_98_loginasync_catch_98_23__catch",
        "from": "method:b6asoe:loginasync__action_96_loginasync_return_96_22__return",
        "to": "method:b6asoe:loginasync__action_98_loginasync_catch_98_23__catch",
        "kind": "exception",
        "line": 98,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86
      },
      {
        "id": "method:b6asoe:loginasync__action_98_loginasync_catch_98_23__catch__method:b6asoe:loginasync__action_100_loginasync_return_100_24__return",
        "from": "method:b6asoe:loginasync__action_98_loginasync_catch_98_23__catch",
        "to": "method:b6asoe:loginasync__action_100_loginasync_return_100_24__return",
        "kind": "return",
        "line": 100,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      }
    ],
    "jumpTargets": [
      {
        "id": "method:b6asoe:loginasync__call_67_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:b6asoe:loginasync__call_67_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 67,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:b6asoe:loginasync__call_70_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:b6asoe:loginasync__call_70_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 70,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:b6asoe:loginasync__call_74_NexusAuthenticationStateProvider_ClearCache__jump_unknown_NexusAuthenticationStateProvider_ClearCache",
        "fromNodeId": "method:b6asoe:loginasync__call_74_NexusAuthenticationStateProvider_ClearCache",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "NexusAuthenticationStateProvider.ClearCache",
        "line": 74,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target NexusAuthenticationStateProvider.ClearCache in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:b6asoe:loginasync__call_75_OnStateInvalidated_Invoke__jump_NexusReader_UI_Shared_Services_IdentityService_cs_OnStateInvalidated_Invoke",
        "fromNodeId": "method:b6asoe:loginasync__call_75_OnStateInvalidated_Invoke",
        "kind": "call-target",
        "targetPath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "targetHint": "OnStateInvalidated.Invoke",
        "line": 75,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target OnStateInvalidated.Invoke in NexusReader.UI.Shared/Services/IdentityService.cs could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:b6asoe:loginasync__call_77_GetProfileAsync__jump_NexusReader_UI_Shared_Services_IdentityService_cs_GetProfileAsync",
        "fromNodeId": "method:b6asoe:loginasync__call_77_GetProfileAsync",
        "kind": "call-target",
        "targetNodeId": "method:1u6514u:getprofileasync",
        "targetPath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "targetHint": "GetProfileAsync",
        "line": 77,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target GetProfileAsync resolved to NexusReader.UI.Shared/Services/IdentityService.cs.",
        "status": "resolved"
      },
      {
        "id": "method:b6asoe:loginasync__call_81_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:b6asoe:loginasync__call_81_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 81,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:b6asoe:loginasync__call_82_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:b6asoe:loginasync__call_82_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 82,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:b6asoe:loginasync__call_85_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:b6asoe:loginasync__call_85_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 85,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:b6asoe:loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication__jump_unknown_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "fromNodeId": "method:b6asoe:loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "NexusAuthenticationStateProvider.NotifyUserAuthentication",
        "line": 87,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target NexusAuthenticationStateProvider.NotifyUserAuthentication in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      }
    ],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [
      "method:b6asoe:loginasync__action_52_loginasync_branch_52_2__merge",
      "method:b6asoe:loginasync__action_52_branch_52__merge",
      "method:b6asoe:loginasync__action_65_guard_clause_65__merge",
      "method:b6asoe:loginasync__action_65_loginasync_branch_65_7__merge",
      "method:b6asoe:loginasync__action_68_loginasync_branch_68_9__merge",
      "method:b6asoe:loginasync__action_75_loginasync_branch_75_11__merge",
      "method:b6asoe:loginasync__action_78_loginasync_branch_78_14__merge",
      "method:b6asoe:loginasync__action_89_loginasync_fallback_89_19__merge"
    ],
    "language": "csharp",
    "confidence": 0.98,
    "lineSpan": {
      "start": 46,
      "end": 102
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "line": 46,
        "summary": "Control-flow fragment extracted for method LoginAsync.",
        "kind": "file-summary"
      }
    ]
  },
  {
    "fragmentId": "method:1i33wis:logoutasync__fragment",
    "ownerFileId": "file:b8uv8h:identityservice-cs",
    "ownerSymbolId": "method:1i33wis:logoutasync",
    "ownerSymbolName": "LogoutAsync",
    "entryNodeId": "method:1i33wis:logoutasync__entry",
    "exitNodeIds": [
      "method:1i33wis:logoutasync__action_122_logoutasync_return_122_10__return",
      "method:1i33wis:logoutasync__action_122_return_122__return",
      "method:1i33wis:logoutasync__action_126_logoutasync_return_126_12__return"
    ],
    "nodes": [
      {
        "id": "method:1i33wis:logoutasync__entry",
        "kind": "entry",
        "label": "LogoutAsync entry",
        "line": 104,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.99,
        "detail": "Clears cached profile and, on browser, erases stored tokens/profile metadata; notifies auth provider and triggers state invalidation."
      },
      {
        "id": "method:1i33wis:logoutasync__action_106_try_catch_106__linear",
        "kind": "statement",
        "label": "Logout guarded",
        "line": 106,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Catches exceptions and returns Result.Fail when logout fails"
      },
      {
        "id": "method:1i33wis:logoutasync__action_106_logoutasync_try_106_0__try",
        "kind": "try",
        "label": "Begins protected execution",
        "line": 106,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84,
        "detail": "try"
      },
      {
        "id": "method:1i33wis:logoutasync__action_108_state_change_108__linear",
        "kind": "statement",
        "label": "Clear cached profile and storage keys",
        "line": 108,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "_cachedProfile = null and, on browser, clears stored tokens and profile metadata"
      },
      {
        "id": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__condition",
        "kind": "condition",
        "label": "System.OperatingSystem.IsBrowser()",
        "line": 109,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (System.OperatingSystem.IsBrowser())"
      },
      {
        "id": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__true",
        "kind": "branch-true",
        "label": "true",
        "line": 109,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__false",
        "kind": "branch-false",
        "label": "false",
        "line": 109,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__merge",
        "kind": "statement",
        "label": "merge",
        "line": 109,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_111_logoutasync_await_111_2__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 111,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(TokenKey, \"\");"
      },
      {
        "id": "method:1i33wis:logoutasync__call_111_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 111,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "TokenKey, empty string"
      },
      {
        "id": "method:1i33wis:logoutasync__action_112_logoutasync_await_112_3__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 112,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(RefreshTokenKey, \"\");"
      },
      {
        "id": "method:1i33wis:logoutasync__call_112_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 112,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "RefreshTokenKey, empty string"
      },
      {
        "id": "method:1i33wis:logoutasync__action_113_logoutasync_await_113_4__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 113,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserEmail, \"\");"
      },
      {
        "id": "method:1i33wis:logoutasync__call_113_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 113,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserEmail, empty string"
      },
      {
        "id": "method:1i33wis:logoutasync__action_114_logoutasync_await_114_5__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 114,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserTenant, \"\");"
      },
      {
        "id": "method:1i33wis:logoutasync__call_114_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 114,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserTenant, empty string"
      },
      {
        "id": "method:1i33wis:logoutasync__action_115_logoutasync_await_115_6__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 115,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserRoles, \"\");"
      },
      {
        "id": "method:1i33wis:logoutasync__call_115_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 115,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserRoles, empty string"
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_await_118_8__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "if (OnStateInvalidated != null) await OnStateInvalidated.Invoke();"
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_notify_118__linear",
        "kind": "statement",
        "label": "Notify auth provider and listeners",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Invokes OnStateInvalidated and calls provider ClearCache/NotifyUserLogout"
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__condition",
        "kind": "condition",
        "label": "OnStateInvalidated != null) await OnStateInvalidated.Invoke(",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (OnStateInvalidated != null) await OnStateInvalidated.Invoke();"
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__true",
        "kind": "branch-true",
        "label": "true",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__false",
        "kind": "branch-false",
        "label": "false",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__merge",
        "kind": "statement",
        "label": "merge",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__call_118_OnStateInvalidated_Invoke",
        "kind": "call",
        "label": "OnStateInvalidated.Invoke",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "invoke event if not null"
      },
      {
        "id": "method:1i33wis:logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache",
        "kind": "call",
        "label": "NexusAuthenticationStateProvider.ClearCache",
        "line": 119,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "cast _authStateProvider and call ClearCache"
      },
      {
        "id": "method:1i33wis:logoutasync__action_120_logoutasync_notification_120_9__linear",
        "kind": "publish-event",
        "label": "Sends notification",
        "line": 120,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.83,
        "detail": "(_authStateProvider as NexusAuthenticationStateProvider)?.NotifyUserLogout();"
      },
      {
        "id": "method:1i33wis:logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout",
        "kind": "call",
        "label": "NexusAuthenticationStateProvider.NotifyUserLogout",
        "line": 120,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "cast _authStateProvider and call NotifyUserLogout"
      },
      {
        "id": "method:1i33wis:logoutasync__action_122_logoutasync_return_122_10__return",
        "kind": "return",
        "label": "Returns result",
        "line": 122,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Ok();"
      },
      {
        "id": "method:1i33wis:logoutasync__action_122_return_122__return",
        "kind": "return",
        "label": "Return success",
        "line": 122,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Returns Result.Ok() on success"
      },
      {
        "id": "method:1i33wis:logoutasync__action_124_logoutasync_catch_124_11__catch",
        "kind": "catch",
        "label": "catch Exception ex",
        "line": 124,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86,
        "detail": "catch (Exception ex)"
      },
      {
        "id": "method:1i33wis:logoutasync__action_126_logoutasync_return_126_12__return",
        "kind": "return",
        "label": "Returns result",
        "line": 126,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Fail(new Error(\"Błąd podczas wylogowywania.\").CausedBy(ex));"
      }
    ],
    "edges": [
      {
        "id": "method:1i33wis:logoutasync__entry__method:1i33wis:logoutasync__action_106_try_catch_106__linear",
        "from": "method:1i33wis:logoutasync__entry",
        "to": "method:1i33wis:logoutasync__action_106_try_catch_106__linear",
        "kind": "next",
        "line": 106,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1i33wis:logoutasync__action_106_try_catch_106__linear__method:1i33wis:logoutasync__action_106_logoutasync_try_106_0__try",
        "from": "method:1i33wis:logoutasync__action_106_try_catch_106__linear",
        "to": "method:1i33wis:logoutasync__action_106_logoutasync_try_106_0__try",
        "kind": "next",
        "line": 106,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:1i33wis:logoutasync__action_106_logoutasync_try_106_0__try__method:1i33wis:logoutasync__action_108_state_change_108__linear",
        "from": "method:1i33wis:logoutasync__action_106_logoutasync_try_106_0__try",
        "to": "method:1i33wis:logoutasync__action_108_state_change_108__linear",
        "kind": "next",
        "line": 108,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1i33wis:logoutasync__action_108_state_change_108__linear__method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__condition",
        "from": "method:1i33wis:logoutasync__action_108_state_change_108__linear",
        "to": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__condition",
        "kind": "next",
        "line": 109,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__condition__method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__true",
        "from": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__condition",
        "to": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__true",
        "kind": "condition-true",
        "label": "true",
        "line": 109,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__condition__method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__false",
        "from": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__condition",
        "to": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__false",
        "kind": "condition-false",
        "label": "false",
        "line": 109,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__true__method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__merge",
        "from": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__true",
        "to": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__merge",
        "kind": "next",
        "line": 109,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__false__method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__merge",
        "from": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__false",
        "to": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__merge",
        "kind": "next",
        "line": 109,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__merge__method:1i33wis:logoutasync__action_111_logoutasync_await_111_2__await",
        "from": "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__merge",
        "to": "method:1i33wis:logoutasync__action_111_logoutasync_await_111_2__await",
        "kind": "next",
        "line": 111,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:1i33wis:logoutasync__action_111_logoutasync_await_111_2__await__call_method:1i33wis:logoutasync__call_111_INativeStorageService_SaveSecureString",
        "from": "method:1i33wis:logoutasync__action_111_logoutasync_await_111_2__await",
        "to": "method:1i33wis:logoutasync__call_111_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "TokenKey, empty string",
        "line": 111,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:1i33wis:logoutasync__call_111_INativeStorageService_SaveSecureString__method:1i33wis:logoutasync__action_112_logoutasync_await_112_3__await",
        "from": "method:1i33wis:logoutasync__call_111_INativeStorageService_SaveSecureString",
        "to": "method:1i33wis:logoutasync__action_112_logoutasync_await_112_3__await",
        "kind": "next",
        "line": 112,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:1i33wis:logoutasync__action_112_logoutasync_await_112_3__await__call_method:1i33wis:logoutasync__call_112_INativeStorageService_SaveSecureString",
        "from": "method:1i33wis:logoutasync__action_112_logoutasync_await_112_3__await",
        "to": "method:1i33wis:logoutasync__call_112_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "RefreshTokenKey, empty string",
        "line": 112,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:1i33wis:logoutasync__call_112_INativeStorageService_SaveSecureString__method:1i33wis:logoutasync__action_113_logoutasync_await_113_4__await",
        "from": "method:1i33wis:logoutasync__call_112_INativeStorageService_SaveSecureString",
        "to": "method:1i33wis:logoutasync__action_113_logoutasync_await_113_4__await",
        "kind": "next",
        "line": 113,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:1i33wis:logoutasync__action_113_logoutasync_await_113_4__await__call_method:1i33wis:logoutasync__call_113_INativeStorageService_SaveSecureString",
        "from": "method:1i33wis:logoutasync__action_113_logoutasync_await_113_4__await",
        "to": "method:1i33wis:logoutasync__call_113_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserEmail, empty string",
        "line": 113,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:1i33wis:logoutasync__call_113_INativeStorageService_SaveSecureString__method:1i33wis:logoutasync__action_114_logoutasync_await_114_5__await",
        "from": "method:1i33wis:logoutasync__call_113_INativeStorageService_SaveSecureString",
        "to": "method:1i33wis:logoutasync__action_114_logoutasync_await_114_5__await",
        "kind": "next",
        "line": 114,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:1i33wis:logoutasync__action_114_logoutasync_await_114_5__await__call_method:1i33wis:logoutasync__call_114_INativeStorageService_SaveSecureString",
        "from": "method:1i33wis:logoutasync__action_114_logoutasync_await_114_5__await",
        "to": "method:1i33wis:logoutasync__call_114_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserTenant, empty string",
        "line": 114,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:1i33wis:logoutasync__call_114_INativeStorageService_SaveSecureString__method:1i33wis:logoutasync__action_115_logoutasync_await_115_6__await",
        "from": "method:1i33wis:logoutasync__call_114_INativeStorageService_SaveSecureString",
        "to": "method:1i33wis:logoutasync__action_115_logoutasync_await_115_6__await",
        "kind": "next",
        "line": 115,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:1i33wis:logoutasync__action_115_logoutasync_await_115_6__await__call_method:1i33wis:logoutasync__call_115_INativeStorageService_SaveSecureString",
        "from": "method:1i33wis:logoutasync__action_115_logoutasync_await_115_6__await",
        "to": "method:1i33wis:logoutasync__call_115_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserRoles, empty string",
        "line": 115,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:1i33wis:logoutasync__call_115_INativeStorageService_SaveSecureString__method:1i33wis:logoutasync__action_118_logoutasync_await_118_8__await",
        "from": "method:1i33wis:logoutasync__call_115_INativeStorageService_SaveSecureString",
        "to": "method:1i33wis:logoutasync__action_118_logoutasync_await_118_8__await",
        "kind": "next",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_await_118_8__await__method:1i33wis:logoutasync__action_118_notify_118__linear",
        "from": "method:1i33wis:logoutasync__action_118_logoutasync_await_118_8__await",
        "to": "method:1i33wis:logoutasync__action_118_notify_118__linear",
        "kind": "next",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_notify_118__linear__method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__condition",
        "from": "method:1i33wis:logoutasync__action_118_notify_118__linear",
        "to": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__condition",
        "kind": "next",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__condition__method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__true",
        "from": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__condition",
        "to": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__true",
        "kind": "condition-true",
        "label": "true",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__condition__method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__false",
        "from": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__condition",
        "to": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__false",
        "kind": "condition-false",
        "label": "false",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__true__method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__merge",
        "from": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__true",
        "to": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__merge",
        "kind": "next",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__false__method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__merge",
        "from": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__false",
        "to": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__merge",
        "kind": "next",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__merge__call_method:1i33wis:logoutasync__call_118_OnStateInvalidated_Invoke",
        "from": "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__merge",
        "to": "method:1i33wis:logoutasync__call_118_OnStateInvalidated_Invoke",
        "kind": "call",
        "label": "invoke event if not null",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:1i33wis:logoutasync__call_118_OnStateInvalidated_Invoke__call_method:1i33wis:logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache",
        "from": "method:1i33wis:logoutasync__call_118_OnStateInvalidated_Invoke",
        "to": "method:1i33wis:logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache",
        "kind": "call",
        "label": "cast _authStateProvider and call ClearCache",
        "line": 119,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:1i33wis:logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache__method:1i33wis:logoutasync__action_120_logoutasync_notification_120_9__linear",
        "from": "method:1i33wis:logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache",
        "to": "method:1i33wis:logoutasync__action_120_logoutasync_notification_120_9__linear",
        "kind": "next",
        "line": 120,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.83
      },
      {
        "id": "method:1i33wis:logoutasync__action_120_logoutasync_notification_120_9__linear__call_method:1i33wis:logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout",
        "from": "method:1i33wis:logoutasync__action_120_logoutasync_notification_120_9__linear",
        "to": "method:1i33wis:logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout",
        "kind": "call",
        "label": "cast _authStateProvider and call NotifyUserLogout",
        "line": 120,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:1i33wis:logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout__method:1i33wis:logoutasync__action_122_logoutasync_return_122_10__return",
        "from": "method:1i33wis:logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout",
        "to": "method:1i33wis:logoutasync__action_122_logoutasync_return_122_10__return",
        "kind": "return",
        "line": 122,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1i33wis:logoutasync__action_122_logoutasync_return_122_10__return__method:1i33wis:logoutasync__action_122_return_122__return",
        "from": "method:1i33wis:logoutasync__action_122_logoutasync_return_122_10__return",
        "to": "method:1i33wis:logoutasync__action_122_return_122__return",
        "kind": "return",
        "line": 122,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1i33wis:logoutasync__action_122_return_122__return__method:1i33wis:logoutasync__action_124_logoutasync_catch_124_11__catch",
        "from": "method:1i33wis:logoutasync__action_122_return_122__return",
        "to": "method:1i33wis:logoutasync__action_124_logoutasync_catch_124_11__catch",
        "kind": "exception",
        "line": 124,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86
      },
      {
        "id": "method:1i33wis:logoutasync__action_124_logoutasync_catch_124_11__catch__method:1i33wis:logoutasync__action_126_logoutasync_return_126_12__return",
        "from": "method:1i33wis:logoutasync__action_124_logoutasync_catch_124_11__catch",
        "to": "method:1i33wis:logoutasync__action_126_logoutasync_return_126_12__return",
        "kind": "return",
        "line": 126,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      }
    ],
    "jumpTargets": [
      {
        "id": "method:1i33wis:logoutasync__call_111_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:1i33wis:logoutasync__call_111_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 111,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:1i33wis:logoutasync__call_112_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:1i33wis:logoutasync__call_112_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 112,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:1i33wis:logoutasync__call_113_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:1i33wis:logoutasync__call_113_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 113,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:1i33wis:logoutasync__call_114_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:1i33wis:logoutasync__call_114_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 114,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:1i33wis:logoutasync__call_115_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:1i33wis:logoutasync__call_115_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 115,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:1i33wis:logoutasync__call_118_OnStateInvalidated_Invoke__jump_NexusReader_UI_Shared_Services_IdentityService_cs_OnStateInvalidated_Invoke",
        "fromNodeId": "method:1i33wis:logoutasync__call_118_OnStateInvalidated_Invoke",
        "kind": "call-target",
        "targetPath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "targetHint": "OnStateInvalidated.Invoke",
        "line": 118,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target OnStateInvalidated.Invoke in NexusReader.UI.Shared/Services/IdentityService.cs could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:1i33wis:logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache__jump_unknown_NexusAuthenticationStateProvider_ClearCache",
        "fromNodeId": "method:1i33wis:logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "NexusAuthenticationStateProvider.ClearCache",
        "line": 119,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target NexusAuthenticationStateProvider.ClearCache in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:1i33wis:logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout__jump_unknown_NexusAuthenticationStateProvider_NotifyUserLogout",
        "fromNodeId": "method:1i33wis:logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "NexusAuthenticationStateProvider.NotifyUserLogout",
        "line": 120,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target NexusAuthenticationStateProvider.NotifyUserLogout in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      }
    ],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [
      "method:1i33wis:logoutasync__action_109_logoutasync_branch_109_1__merge",
      "method:1i33wis:logoutasync__action_118_logoutasync_branch_118_7__merge"
    ],
    "language": "csharp",
    "confidence": 0.98,
    "lineSpan": {
      "start": 104,
      "end": 128
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "line": 104,
        "summary": "Control-flow fragment extracted for method LogoutAsync.",
        "kind": "file-summary"
      }
    ]
  },
  {
    "fragmentId": "method:1u6514u:getprofileasync__fragment",
    "ownerFileId": "file:b8uv8h:identityservice-cs",
    "ownerSymbolId": "method:1u6514u:getprofileasync",
    "ownerSymbolName": "GetProfileAsync",
    "entryNodeId": "method:1u6514u:getprofileasync__entry",
    "exitNodeIds": [
      "method:1u6514u:getprofileasync__action_134_getprofileasync_return_134_1__return",
      "method:1u6514u:getprofileasync__action_140_getprofileasync_return_140_4__return",
      "method:1u6514u:getprofileasync__action_145_getprofileasync_return_145_6__return"
    ],
    "nodes": [
      {
        "id": "method:1u6514u:getprofileasync__entry",
        "kind": "entry",
        "label": "GetProfileAsync entry",
        "line": 130,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.99,
        "detail": "Public cached-profile accessor: returns cached profile, reuses an in-flight profile task if present, otherwise triggers background fetch and returns its result wrapped in Result."
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_guard_clause_132__condition",
        "kind": "condition",
        "label": "_cachedProfile != null",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "If cached, returns Result.Ok(_cachedProfile)"
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_guard_clause_132__true",
        "kind": "branch-true",
        "label": "return cached",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_guard_clause_132__false",
        "kind": "branch-false",
        "label": "continue",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_guard_clause_132__merge",
        "kind": "statement",
        "label": "merge",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__condition",
        "kind": "condition",
        "label": "_cachedProfile != null",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (_cachedProfile != null)"
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__true",
        "kind": "branch-true",
        "label": "true",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__false",
        "kind": "branch-false",
        "label": "false",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__merge",
        "kind": "statement",
        "label": "merge",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_134_getprofileasync_return_134_1__return",
        "kind": "return",
        "label": "Returns result",
        "line": 134,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Ok(_cachedProfile);"
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_guard_clause_137__condition",
        "kind": "condition",
        "label": "_profileTask != null",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Awaits existing _profileTask and translates null->fail"
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_guard_clause_137__true",
        "kind": "branch-true",
        "label": "await existing task",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_guard_clause_137__false",
        "kind": "branch-false",
        "label": "start new fetch",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_guard_clause_137__merge",
        "kind": "statement",
        "label": "merge",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__condition",
        "kind": "condition",
        "label": "_profileTask != null",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (_profileTask != null)"
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__true",
        "kind": "branch-true",
        "label": "true",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__false",
        "kind": "branch-false",
        "label": "false",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__merge",
        "kind": "statement",
        "label": "merge",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_139_getprofileasync_await_139_3__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 139,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var p = await _profileTask;"
      },
      {
        "id": "method:1u6514u:getprofileasync__action_140_getprofileasync_return_140_4__return",
        "kind": "return",
        "label": "Returns result",
        "line": 140,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return p != null ? Result.Ok(p) : Result.Fail(\"Nie znaleziono profilu.\");"
      },
      {
        "id": "method:1u6514u:getprofileasync__action_143_orchestration_143__linear",
        "kind": "statement",
        "label": "Start internal profile fetch",
        "line": 143,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Sets _profileTask to GetProfileInternalAsync and awaits it, returning success or failure Result"
      },
      {
        "id": "method:1u6514u:getprofileasync__call_143_GetProfileInternalAsync",
        "kind": "call",
        "label": "GetProfileInternalAsync",
        "line": 143,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "no parameters (starts internal fetch task)"
      },
      {
        "id": "method:1u6514u:getprofileasync__action_144_getprofileasync_await_144_5__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 144,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var result = await _profileTask;"
      },
      {
        "id": "method:1u6514u:getprofileasync__action_145_getprofileasync_return_145_6__return",
        "kind": "return",
        "label": "Returns result",
        "line": 145,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return result != null ? Result.Ok(result) : Result.Fail(\"Błąd podczas pobierania profilu.\");"
      }
    ],
    "edges": [
      {
        "id": "method:1u6514u:getprofileasync__entry__method:1u6514u:getprofileasync__action_132_guard_clause_132__condition",
        "from": "method:1u6514u:getprofileasync__entry",
        "to": "method:1u6514u:getprofileasync__action_132_guard_clause_132__condition",
        "kind": "next",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_guard_clause_132__condition__method:1u6514u:getprofileasync__action_132_guard_clause_132__true",
        "from": "method:1u6514u:getprofileasync__action_132_guard_clause_132__condition",
        "to": "method:1u6514u:getprofileasync__action_132_guard_clause_132__true",
        "kind": "condition-true",
        "label": "return cached",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_guard_clause_132__condition__method:1u6514u:getprofileasync__action_132_guard_clause_132__false",
        "from": "method:1u6514u:getprofileasync__action_132_guard_clause_132__condition",
        "to": "method:1u6514u:getprofileasync__action_132_guard_clause_132__false",
        "kind": "condition-false",
        "label": "continue",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_guard_clause_132__true__method:1u6514u:getprofileasync__action_132_guard_clause_132__merge",
        "from": "method:1u6514u:getprofileasync__action_132_guard_clause_132__true",
        "to": "method:1u6514u:getprofileasync__action_132_guard_clause_132__merge",
        "kind": "next",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_guard_clause_132__false__method:1u6514u:getprofileasync__action_132_guard_clause_132__merge",
        "from": "method:1u6514u:getprofileasync__action_132_guard_clause_132__false",
        "to": "method:1u6514u:getprofileasync__action_132_guard_clause_132__merge",
        "kind": "next",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_guard_clause_132__merge__method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__condition",
        "from": "method:1u6514u:getprofileasync__action_132_guard_clause_132__merge",
        "to": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__condition",
        "kind": "next",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__condition__method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__true",
        "from": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__condition",
        "to": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__true",
        "kind": "condition-true",
        "label": "true",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__condition__method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__false",
        "from": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__condition",
        "to": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__false",
        "kind": "condition-false",
        "label": "false",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__true__method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__merge",
        "from": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__true",
        "to": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__merge",
        "kind": "next",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__false__method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__merge",
        "from": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__false",
        "to": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__merge",
        "kind": "next",
        "line": 132,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__merge__method:1u6514u:getprofileasync__action_134_getprofileasync_return_134_1__return",
        "from": "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__merge",
        "to": "method:1u6514u:getprofileasync__action_134_getprofileasync_return_134_1__return",
        "kind": "return",
        "line": 134,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_134_getprofileasync_return_134_1__return__method:1u6514u:getprofileasync__action_137_guard_clause_137__condition",
        "from": "method:1u6514u:getprofileasync__action_134_getprofileasync_return_134_1__return",
        "to": "method:1u6514u:getprofileasync__action_137_guard_clause_137__condition",
        "kind": "next",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_guard_clause_137__condition__method:1u6514u:getprofileasync__action_137_guard_clause_137__true",
        "from": "method:1u6514u:getprofileasync__action_137_guard_clause_137__condition",
        "to": "method:1u6514u:getprofileasync__action_137_guard_clause_137__true",
        "kind": "condition-true",
        "label": "await existing task",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_guard_clause_137__condition__method:1u6514u:getprofileasync__action_137_guard_clause_137__false",
        "from": "method:1u6514u:getprofileasync__action_137_guard_clause_137__condition",
        "to": "method:1u6514u:getprofileasync__action_137_guard_clause_137__false",
        "kind": "condition-false",
        "label": "start new fetch",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_guard_clause_137__true__method:1u6514u:getprofileasync__action_137_guard_clause_137__merge",
        "from": "method:1u6514u:getprofileasync__action_137_guard_clause_137__true",
        "to": "method:1u6514u:getprofileasync__action_137_guard_clause_137__merge",
        "kind": "next",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_guard_clause_137__false__method:1u6514u:getprofileasync__action_137_guard_clause_137__merge",
        "from": "method:1u6514u:getprofileasync__action_137_guard_clause_137__false",
        "to": "method:1u6514u:getprofileasync__action_137_guard_clause_137__merge",
        "kind": "next",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_guard_clause_137__merge__method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__condition",
        "from": "method:1u6514u:getprofileasync__action_137_guard_clause_137__merge",
        "to": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__condition",
        "kind": "next",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__condition__method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__true",
        "from": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__condition",
        "to": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__true",
        "kind": "condition-true",
        "label": "true",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__condition__method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__false",
        "from": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__condition",
        "to": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__false",
        "kind": "condition-false",
        "label": "false",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__true__method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__merge",
        "from": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__true",
        "to": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__merge",
        "kind": "next",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__false__method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__merge",
        "from": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__false",
        "to": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__merge",
        "kind": "next",
        "line": 137,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__merge__method:1u6514u:getprofileasync__action_139_getprofileasync_await_139_3__await",
        "from": "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__merge",
        "to": "method:1u6514u:getprofileasync__action_139_getprofileasync_await_139_3__await",
        "kind": "next",
        "line": 139,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:1u6514u:getprofileasync__action_139_getprofileasync_await_139_3__await__method:1u6514u:getprofileasync__action_140_getprofileasync_return_140_4__return",
        "from": "method:1u6514u:getprofileasync__action_139_getprofileasync_await_139_3__await",
        "to": "method:1u6514u:getprofileasync__action_140_getprofileasync_return_140_4__return",
        "kind": "return",
        "line": 140,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_140_getprofileasync_return_140_4__return__method:1u6514u:getprofileasync__action_143_orchestration_143__linear",
        "from": "method:1u6514u:getprofileasync__action_140_getprofileasync_return_140_4__return",
        "to": "method:1u6514u:getprofileasync__action_143_orchestration_143__linear",
        "kind": "next",
        "line": 143,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:1u6514u:getprofileasync__action_143_orchestration_143__linear__call_method:1u6514u:getprofileasync__call_143_GetProfileInternalAsync",
        "from": "method:1u6514u:getprofileasync__action_143_orchestration_143__linear",
        "to": "method:1u6514u:getprofileasync__call_143_GetProfileInternalAsync",
        "kind": "call",
        "label": "no parameters (starts internal fetch task)",
        "line": 143,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:1u6514u:getprofileasync__call_143_GetProfileInternalAsync__method:1u6514u:getprofileasync__action_144_getprofileasync_await_144_5__await",
        "from": "method:1u6514u:getprofileasync__call_143_GetProfileInternalAsync",
        "to": "method:1u6514u:getprofileasync__action_144_getprofileasync_await_144_5__await",
        "kind": "next",
        "line": 144,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:1u6514u:getprofileasync__action_144_getprofileasync_await_144_5__await__method:1u6514u:getprofileasync__action_145_getprofileasync_return_145_6__return",
        "from": "method:1u6514u:getprofileasync__action_144_getprofileasync_await_144_5__await",
        "to": "method:1u6514u:getprofileasync__action_145_getprofileasync_return_145_6__return",
        "kind": "return",
        "line": 145,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      }
    ],
    "jumpTargets": [
      {
        "id": "method:1u6514u:getprofileasync__call_143_GetProfileInternalAsync__jump_NexusReader_UI_Shared_Services_IdentityService_cs_GetProfileInternalAsync",
        "fromNodeId": "method:1u6514u:getprofileasync__call_143_GetProfileInternalAsync",
        "kind": "call-target",
        "targetNodeId": "method:nyrl9z:getprofileinternalasync",
        "targetPath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "targetHint": "GetProfileInternalAsync",
        "line": 143,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target GetProfileInternalAsync resolved to NexusReader.UI.Shared/Services/IdentityService.cs.",
        "status": "resolved"
      }
    ],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [
      "method:1u6514u:getprofileasync__action_132_guard_clause_132__merge",
      "method:1u6514u:getprofileasync__action_132_getprofileasync_branch_132_0__merge",
      "method:1u6514u:getprofileasync__action_137_guard_clause_137__merge",
      "method:1u6514u:getprofileasync__action_137_getprofileasync_branch_137_2__merge"
    ],
    "language": "csharp",
    "confidence": 0.98,
    "lineSpan": {
      "start": 130,
      "end": 146
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "line": 130,
        "summary": "Control-flow fragment extracted for method GetProfileAsync.",
        "kind": "file-summary"
      }
    ]
  },
  {
    "fragmentId": "method:nyrl9z:getprofileinternalasync__fragment",
    "ownerFileId": "file:b8uv8h:identityservice-cs",
    "ownerSymbolId": "method:nyrl9z:getprofileinternalasync",
    "ownerSymbolName": "GetProfileInternalAsync",
    "entryNodeId": "method:nyrl9z:getprofileinternalasync__entry",
    "exitNodeIds": [
      "method:nyrl9z:getprofileinternalasync__action_154_getprofileinternalasync_return_154_1__return",
      "method:nyrl9z:getprofileinternalasync__action_159_getprofileinternalasync_return_159_3__return",
      "method:nyrl9z:getprofileinternalasync__action_170_getprofileinternalasync_return_170_8__return",
      "method:nyrl9z:getprofileinternalasync__action_187_getprofileinternalasync_return_187_16__return",
      "method:nyrl9z:getprofileinternalasync__action_190_getprofileinternalasync_return_190_17__return",
      "method:nyrl9z:getprofileinternalasync__action_194_getprofileinternalasync_return_194_19__return",
      "method:nyrl9z:getprofileinternalasync__implicit_return"
    ],
    "nodes": [
      {
        "id": "method:nyrl9z:getprofileinternalasync__entry",
        "kind": "entry",
        "label": "GetProfileInternalAsync entry",
        "line": 150,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.99,
        "detail": "Performs the actual HTTP profile fetch with basic rate-limiting, updates cache/storage and notifies auth provider; handles unauthorized by logging out."
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__condition",
        "kind": "condition",
        "label": "System.OperatingSystem.IsBrowser()",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Returns null when not running in browser"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__true",
        "kind": "branch-true",
        "label": "return null",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__false",
        "kind": "branch-false",
        "label": "continue",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__merge",
        "kind": "statement",
        "label": "merge",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition",
        "kind": "condition",
        "label": "!System.OperatingSystem.IsBrowser()",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (!System.OperatingSystem.IsBrowser())"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__true",
        "kind": "branch-true",
        "label": "true",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__false",
        "kind": "branch-false",
        "label": "false",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge",
        "kind": "statement",
        "label": "merge",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_154_getprofileinternalasync_return_154_1__return",
        "kind": "return",
        "label": "Returns result",
        "line": 154,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return null;"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_rate_limit_157__linear",
        "kind": "statement",
        "label": "Throttle repeated fetches",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Prevents fetching more often than every 5 seconds"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition",
        "kind": "condition",
        "label": "DateTime.UtcNow - _lastFetchAttempt < TimeSpan.FromSeconds(5)",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (DateTime.UtcNow - _lastFetchAttempt < TimeSpan.FromSeconds(5))"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__true",
        "kind": "branch-true",
        "label": "true",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__false",
        "kind": "branch-false",
        "label": "false",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge",
        "kind": "statement",
        "label": "merge",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_159_getprofileinternalasync_return_159_3__return",
        "kind": "return",
        "label": "Returns result",
        "line": 159,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return null;"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_162_state_change_162__linear",
        "kind": "statement",
        "label": "Update last fetch timestamp",
        "line": 162,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "_lastFetchAttempt = DateTime.UtcNow"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_163_getprofileinternalasync_try_163_4__try",
        "kind": "try",
        "label": "Begins protected execution",
        "line": 163,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84,
        "detail": "try"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_165_getprofileinternalasync_await_165_5__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 165,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var response = await _httpClient.GetAsync(\"identity/profile\");"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_165_external_call_165__linear",
        "kind": "http-call",
        "label": "GET profile",
        "line": 165,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "HttpClient.GetAsync('identity/profile') (framework call omitted from calls list)"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__condition",
        "kind": "condition",
        "label": "response.StatusCode == Unauthorized",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "On 401 calls LogoutAsync and returns null"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__true",
        "kind": "branch-true",
        "label": "logout and return null",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__false",
        "kind": "branch-false",
        "label": "continue",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__merge",
        "kind": "statement",
        "label": "merge",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition",
        "kind": "condition",
        "label": "response.StatusCode == System.Net.HttpStatusCode.Unauthorized",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (response.StatusCode == System.Net.HttpStatusCode.Unauthorized)"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__true",
        "kind": "branch-true",
        "label": "true",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__false",
        "kind": "branch-false",
        "label": "false",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge",
        "kind": "statement",
        "label": "merge",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_169_getprofileinternalasync_await_169_7__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 169,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await LogoutAsync();"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_169_LogoutAsync",
        "kind": "call",
        "label": "LogoutAsync",
        "line": 169,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "no parameters (called on 401)"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_170_getprofileinternalasync_return_170_8__return",
        "kind": "return",
        "label": "Returns result",
        "line": 170,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return null;"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__condition",
        "kind": "condition",
        "label": "response.IsSuccessStatusCode",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Parses JSON to UserProfileDto, caches it, saves email/tenant/roles and notifies auth provider"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__true",
        "kind": "branch-true",
        "label": "true",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__false",
        "kind": "branch-false",
        "label": "false",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__merge",
        "kind": "statement",
        "label": "merge",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition",
        "kind": "condition",
        "label": "response.IsSuccessStatusCode",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (response.IsSuccessStatusCode)"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__true",
        "kind": "branch-true",
        "label": "true",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__false",
        "kind": "branch-false",
        "label": "false",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge",
        "kind": "statement",
        "label": "merge",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_175_getprofileinternalasync_await_175_10__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 175,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var profile = await response.Content.ReadFromJsonAsync<UserProfileDto>();"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition",
        "kind": "condition",
        "label": "profile != null",
        "line": 176,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (profile != null)"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__true",
        "kind": "branch-true",
        "label": "true",
        "line": 176,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__false",
        "kind": "branch-false",
        "label": "false",
        "line": 176,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge",
        "kind": "statement",
        "label": "merge",
        "line": 176,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_179_getprofileinternalasync_await_179_12__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 179,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserEmail, profile.Email);"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_179_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 179,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserEmail, profile.Email"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_180_getprofileinternalasync_await_180_13__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 180,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserTenant, profile.TenantId.ToString());"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_180_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 180,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserTenant, profile.TenantId.ToString()"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_183_getprofileinternalasync_await_183_14__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 183,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserRoles, rolesStr);"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_183_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 183,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserRoles, rolesStr"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_185_getprofileinternalasync_notification_185_15__linear",
        "kind": "publish-event",
        "label": "Sends notification",
        "line": 185,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.83,
        "detail": "(_authStateProvider as NexusAuthenticationStateProvider)?.NotifyUserAuthentication(profile.Email, profile.TenantId.ToString(), rolesStr);"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "kind": "call",
        "label": "NexusAuthenticationStateProvider.NotifyUserAuthentication",
        "line": 185,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "profile.Email, profile.TenantId.ToString(), rolesStr"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_187_getprofileinternalasync_return_187_16__return",
        "kind": "return",
        "label": "Returns result",
        "line": 187,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return profile;"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_190_getprofileinternalasync_return_190_17__return",
        "kind": "return",
        "label": "Returns result",
        "line": 190,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return null;"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_192_try_catch_192__linear",
        "kind": "statement",
        "label": "Swallow fetch/parsing errors",
        "line": 192,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Catches any exception and returns null"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_192_getprofileinternalasync_catch_192_18__catch",
        "kind": "catch",
        "label": "Handles exception path",
        "line": 192,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86,
        "detail": "catch"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_194_getprofileinternalasync_return_194_19__return",
        "kind": "return",
        "label": "Returns result",
        "line": 194,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return null;"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_196_getprofileinternalasync_finally_196_20__finally",
        "kind": "finally",
        "label": "Runs cleanup or finalization",
        "line": 196,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84,
        "detail": "finally"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_198_finally_198__finally",
        "kind": "finally",
        "label": "Reset in-flight task marker",
        "line": 198,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "_profileTask = null"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__implicit_return",
        "kind": "return",
        "label": "return",
        "line": 200,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.72,
        "detail": "Implicit method exit inferred from method boundary."
      }
    ],
    "edges": [
      {
        "id": "method:nyrl9z:getprofileinternalasync__entry__method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__condition",
        "from": "method:nyrl9z:getprofileinternalasync__entry",
        "to": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__condition",
        "kind": "next",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__condition__method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__true",
        "from": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__true",
        "kind": "condition-true",
        "label": "return null",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__condition__method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__false",
        "from": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__false",
        "kind": "condition-false",
        "label": "continue",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__true__method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__true",
        "to": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__merge",
        "kind": "next",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__false__method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__false",
        "to": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__merge",
        "kind": "next",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__merge__method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition",
        "from": "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__merge",
        "to": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition",
        "kind": "next",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition__method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__true",
        "from": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__true",
        "kind": "condition-true",
        "label": "true",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition__method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__false",
        "from": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__false",
        "kind": "condition-false",
        "label": "false",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__true__method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__true",
        "to": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge",
        "kind": "next",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__false__method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__false",
        "to": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge",
        "kind": "next",
        "line": 152,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge__method:nyrl9z:getprofileinternalasync__action_154_getprofileinternalasync_return_154_1__return",
        "from": "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge",
        "to": "method:nyrl9z:getprofileinternalasync__action_154_getprofileinternalasync_return_154_1__return",
        "kind": "return",
        "line": 154,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_154_getprofileinternalasync_return_154_1__return__method:nyrl9z:getprofileinternalasync__action_157_rate_limit_157__linear",
        "from": "method:nyrl9z:getprofileinternalasync__action_154_getprofileinternalasync_return_154_1__return",
        "to": "method:nyrl9z:getprofileinternalasync__action_157_rate_limit_157__linear",
        "kind": "next",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_rate_limit_157__linear__method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition",
        "from": "method:nyrl9z:getprofileinternalasync__action_157_rate_limit_157__linear",
        "to": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition",
        "kind": "next",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition__method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__true",
        "from": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__true",
        "kind": "condition-true",
        "label": "true",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition__method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__false",
        "from": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__false",
        "kind": "condition-false",
        "label": "false",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__true__method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__true",
        "to": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge",
        "kind": "next",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__false__method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__false",
        "to": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge",
        "kind": "next",
        "line": 157,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge__method:nyrl9z:getprofileinternalasync__action_159_getprofileinternalasync_return_159_3__return",
        "from": "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge",
        "to": "method:nyrl9z:getprofileinternalasync__action_159_getprofileinternalasync_return_159_3__return",
        "kind": "return",
        "line": 159,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_159_getprofileinternalasync_return_159_3__return__method:nyrl9z:getprofileinternalasync__action_162_state_change_162__linear",
        "from": "method:nyrl9z:getprofileinternalasync__action_159_getprofileinternalasync_return_159_3__return",
        "to": "method:nyrl9z:getprofileinternalasync__action_162_state_change_162__linear",
        "kind": "next",
        "line": 162,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_162_state_change_162__linear__method:nyrl9z:getprofileinternalasync__action_163_getprofileinternalasync_try_163_4__try",
        "from": "method:nyrl9z:getprofileinternalasync__action_162_state_change_162__linear",
        "to": "method:nyrl9z:getprofileinternalasync__action_163_getprofileinternalasync_try_163_4__try",
        "kind": "next",
        "line": 163,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_163_getprofileinternalasync_try_163_4__try__method:nyrl9z:getprofileinternalasync__action_165_getprofileinternalasync_await_165_5__await",
        "from": "method:nyrl9z:getprofileinternalasync__action_163_getprofileinternalasync_try_163_4__try",
        "to": "method:nyrl9z:getprofileinternalasync__action_165_getprofileinternalasync_await_165_5__await",
        "kind": "next",
        "line": 165,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_165_getprofileinternalasync_await_165_5__await__method:nyrl9z:getprofileinternalasync__action_165_external_call_165__linear",
        "from": "method:nyrl9z:getprofileinternalasync__action_165_getprofileinternalasync_await_165_5__await",
        "to": "method:nyrl9z:getprofileinternalasync__action_165_external_call_165__linear",
        "kind": "next",
        "line": 165,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_165_external_call_165__linear__method:nyrl9z:getprofileinternalasync__action_167_branch_167__condition",
        "from": "method:nyrl9z:getprofileinternalasync__action_165_external_call_165__linear",
        "to": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__condition",
        "kind": "next",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__condition__method:nyrl9z:getprofileinternalasync__action_167_branch_167__true",
        "from": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__true",
        "kind": "condition-true",
        "label": "logout and return null",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__condition__method:nyrl9z:getprofileinternalasync__action_167_branch_167__false",
        "from": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__false",
        "kind": "condition-false",
        "label": "continue",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__true__method:nyrl9z:getprofileinternalasync__action_167_branch_167__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__true",
        "to": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__merge",
        "kind": "next",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__false__method:nyrl9z:getprofileinternalasync__action_167_branch_167__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__false",
        "to": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__merge",
        "kind": "next",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__merge__method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition",
        "from": "method:nyrl9z:getprofileinternalasync__action_167_branch_167__merge",
        "to": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition",
        "kind": "next",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition__method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__true",
        "from": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__true",
        "kind": "condition-true",
        "label": "true",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition__method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__false",
        "from": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__false",
        "kind": "condition-false",
        "label": "false",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__true__method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__true",
        "to": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge",
        "kind": "next",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__false__method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__false",
        "to": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge",
        "kind": "next",
        "line": 167,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge__method:nyrl9z:getprofileinternalasync__action_169_getprofileinternalasync_await_169_7__await",
        "from": "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge",
        "to": "method:nyrl9z:getprofileinternalasync__action_169_getprofileinternalasync_await_169_7__await",
        "kind": "next",
        "line": 169,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_169_getprofileinternalasync_await_169_7__await__call_method:nyrl9z:getprofileinternalasync__call_169_LogoutAsync",
        "from": "method:nyrl9z:getprofileinternalasync__action_169_getprofileinternalasync_await_169_7__await",
        "to": "method:nyrl9z:getprofileinternalasync__call_169_LogoutAsync",
        "kind": "call",
        "label": "no parameters (called on 401)",
        "line": 169,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_169_LogoutAsync__method:nyrl9z:getprofileinternalasync__action_170_getprofileinternalasync_return_170_8__return",
        "from": "method:nyrl9z:getprofileinternalasync__call_169_LogoutAsync",
        "to": "method:nyrl9z:getprofileinternalasync__action_170_getprofileinternalasync_return_170_8__return",
        "kind": "return",
        "line": 170,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_170_getprofileinternalasync_return_170_8__return__method:nyrl9z:getprofileinternalasync__action_173_branch_173__condition",
        "from": "method:nyrl9z:getprofileinternalasync__action_170_getprofileinternalasync_return_170_8__return",
        "to": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__condition",
        "kind": "next",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__condition__method:nyrl9z:getprofileinternalasync__action_173_branch_173__true",
        "from": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__true",
        "kind": "condition-true",
        "label": "true",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__condition__method:nyrl9z:getprofileinternalasync__action_173_branch_173__false",
        "from": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__false",
        "kind": "condition-false",
        "label": "false",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__true__method:nyrl9z:getprofileinternalasync__action_173_branch_173__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__true",
        "to": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__merge",
        "kind": "next",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__false__method:nyrl9z:getprofileinternalasync__action_173_branch_173__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__false",
        "to": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__merge",
        "kind": "next",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__merge__method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition",
        "from": "method:nyrl9z:getprofileinternalasync__action_173_branch_173__merge",
        "to": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition",
        "kind": "next",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition__method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__true",
        "from": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__true",
        "kind": "condition-true",
        "label": "true",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition__method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__false",
        "from": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__false",
        "kind": "condition-false",
        "label": "false",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__true__method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__true",
        "to": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge",
        "kind": "next",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__false__method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__false",
        "to": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge",
        "kind": "next",
        "line": 173,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge__method:nyrl9z:getprofileinternalasync__action_175_getprofileinternalasync_await_175_10__await",
        "from": "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge",
        "to": "method:nyrl9z:getprofileinternalasync__action_175_getprofileinternalasync_await_175_10__await",
        "kind": "next",
        "line": 175,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_175_getprofileinternalasync_await_175_10__await__method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition",
        "from": "method:nyrl9z:getprofileinternalasync__action_175_getprofileinternalasync_await_175_10__await",
        "to": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition",
        "kind": "next",
        "line": 176,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition__method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__true",
        "from": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__true",
        "kind": "condition-true",
        "label": "true",
        "line": 176,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition__method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__false",
        "from": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition",
        "to": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__false",
        "kind": "condition-false",
        "label": "false",
        "line": 176,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__true__method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__true",
        "to": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge",
        "kind": "next",
        "line": 176,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__false__method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge",
        "from": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__false",
        "to": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge",
        "kind": "next",
        "line": 176,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge__method:nyrl9z:getprofileinternalasync__action_179_getprofileinternalasync_await_179_12__await",
        "from": "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge",
        "to": "method:nyrl9z:getprofileinternalasync__action_179_getprofileinternalasync_await_179_12__await",
        "kind": "next",
        "line": 179,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_179_getprofileinternalasync_await_179_12__await__call_method:nyrl9z:getprofileinternalasync__call_179_INativeStorageService_SaveSecureString",
        "from": "method:nyrl9z:getprofileinternalasync__action_179_getprofileinternalasync_await_179_12__await",
        "to": "method:nyrl9z:getprofileinternalasync__call_179_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserEmail, profile.Email",
        "line": 179,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_179_INativeStorageService_SaveSecureString__method:nyrl9z:getprofileinternalasync__action_180_getprofileinternalasync_await_180_13__await",
        "from": "method:nyrl9z:getprofileinternalasync__call_179_INativeStorageService_SaveSecureString",
        "to": "method:nyrl9z:getprofileinternalasync__action_180_getprofileinternalasync_await_180_13__await",
        "kind": "next",
        "line": 180,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_180_getprofileinternalasync_await_180_13__await__call_method:nyrl9z:getprofileinternalasync__call_180_INativeStorageService_SaveSecureString",
        "from": "method:nyrl9z:getprofileinternalasync__action_180_getprofileinternalasync_await_180_13__await",
        "to": "method:nyrl9z:getprofileinternalasync__call_180_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserTenant, profile.TenantId.ToString()",
        "line": 180,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_180_INativeStorageService_SaveSecureString__method:nyrl9z:getprofileinternalasync__action_183_getprofileinternalasync_await_183_14__await",
        "from": "method:nyrl9z:getprofileinternalasync__call_180_INativeStorageService_SaveSecureString",
        "to": "method:nyrl9z:getprofileinternalasync__action_183_getprofileinternalasync_await_183_14__await",
        "kind": "next",
        "line": 183,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_183_getprofileinternalasync_await_183_14__await__call_method:nyrl9z:getprofileinternalasync__call_183_INativeStorageService_SaveSecureString",
        "from": "method:nyrl9z:getprofileinternalasync__action_183_getprofileinternalasync_await_183_14__await",
        "to": "method:nyrl9z:getprofileinternalasync__call_183_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserRoles, rolesStr",
        "line": 183,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_183_INativeStorageService_SaveSecureString__method:nyrl9z:getprofileinternalasync__action_185_getprofileinternalasync_notification_185_15__linear",
        "from": "method:nyrl9z:getprofileinternalasync__call_183_INativeStorageService_SaveSecureString",
        "to": "method:nyrl9z:getprofileinternalasync__action_185_getprofileinternalasync_notification_185_15__linear",
        "kind": "next",
        "line": 185,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.83
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_185_getprofileinternalasync_notification_185_15__linear__call_method:nyrl9z:getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "from": "method:nyrl9z:getprofileinternalasync__action_185_getprofileinternalasync_notification_185_15__linear",
        "to": "method:nyrl9z:getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "kind": "call",
        "label": "profile.Email, profile.TenantId.ToString(), rolesStr",
        "line": 185,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication__method:nyrl9z:getprofileinternalasync__action_187_getprofileinternalasync_return_187_16__return",
        "from": "method:nyrl9z:getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "to": "method:nyrl9z:getprofileinternalasync__action_187_getprofileinternalasync_return_187_16__return",
        "kind": "return",
        "line": 187,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_187_getprofileinternalasync_return_187_16__return__method:nyrl9z:getprofileinternalasync__action_190_getprofileinternalasync_return_190_17__return",
        "from": "method:nyrl9z:getprofileinternalasync__action_187_getprofileinternalasync_return_187_16__return",
        "to": "method:nyrl9z:getprofileinternalasync__action_190_getprofileinternalasync_return_190_17__return",
        "kind": "return",
        "line": 190,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_190_getprofileinternalasync_return_190_17__return__method:nyrl9z:getprofileinternalasync__action_192_try_catch_192__linear",
        "from": "method:nyrl9z:getprofileinternalasync__action_190_getprofileinternalasync_return_190_17__return",
        "to": "method:nyrl9z:getprofileinternalasync__action_192_try_catch_192__linear",
        "kind": "next",
        "line": 192,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_192_try_catch_192__linear__method:nyrl9z:getprofileinternalasync__action_192_getprofileinternalasync_catch_192_18__catch",
        "from": "method:nyrl9z:getprofileinternalasync__action_192_try_catch_192__linear",
        "to": "method:nyrl9z:getprofileinternalasync__action_192_getprofileinternalasync_catch_192_18__catch",
        "kind": "exception",
        "line": 192,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_192_getprofileinternalasync_catch_192_18__catch__method:nyrl9z:getprofileinternalasync__action_194_getprofileinternalasync_return_194_19__return",
        "from": "method:nyrl9z:getprofileinternalasync__action_192_getprofileinternalasync_catch_192_18__catch",
        "to": "method:nyrl9z:getprofileinternalasync__action_194_getprofileinternalasync_return_194_19__return",
        "kind": "return",
        "line": 194,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_194_getprofileinternalasync_return_194_19__return__method:nyrl9z:getprofileinternalasync__action_196_getprofileinternalasync_finally_196_20__finally",
        "from": "method:nyrl9z:getprofileinternalasync__action_194_getprofileinternalasync_return_194_19__return",
        "to": "method:nyrl9z:getprofileinternalasync__action_196_getprofileinternalasync_finally_196_20__finally",
        "kind": "next",
        "line": 196,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_196_getprofileinternalasync_finally_196_20__finally__method:nyrl9z:getprofileinternalasync__action_198_finally_198__finally",
        "from": "method:nyrl9z:getprofileinternalasync__action_196_getprofileinternalasync_finally_196_20__finally",
        "to": "method:nyrl9z:getprofileinternalasync__action_198_finally_198__finally",
        "kind": "next",
        "line": 198,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__action_198_finally_198__finally__implicit_return",
        "from": "method:nyrl9z:getprofileinternalasync__action_198_finally_198__finally",
        "to": "method:nyrl9z:getprofileinternalasync__implicit_return",
        "kind": "return",
        "line": 200,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.72
      }
    ],
    "jumpTargets": [
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_169_LogoutAsync__jump_NexusReader_UI_Shared_Services_IdentityService_cs_LogoutAsync",
        "fromNodeId": "method:nyrl9z:getprofileinternalasync__call_169_LogoutAsync",
        "kind": "call-target",
        "targetNodeId": "method:1i33wis:logoutasync",
        "targetPath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "targetHint": "LogoutAsync",
        "line": 169,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target LogoutAsync resolved to NexusReader.UI.Shared/Services/IdentityService.cs.",
        "status": "resolved"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_179_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:nyrl9z:getprofileinternalasync__call_179_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 179,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_180_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:nyrl9z:getprofileinternalasync__call_180_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 180,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_183_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:nyrl9z:getprofileinternalasync__call_183_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 183,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nyrl9z:getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication__jump_unknown_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "fromNodeId": "method:nyrl9z:getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "NexusAuthenticationStateProvider.NotifyUserAuthentication",
        "line": 185,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target NexusAuthenticationStateProvider.NotifyUserAuthentication in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      }
    ],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [
      "method:nyrl9z:getprofileinternalasync__action_152_guard_clause_152__merge",
      "method:nyrl9z:getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge",
      "method:nyrl9z:getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge",
      "method:nyrl9z:getprofileinternalasync__action_167_branch_167__merge",
      "method:nyrl9z:getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge",
      "method:nyrl9z:getprofileinternalasync__action_173_branch_173__merge",
      "method:nyrl9z:getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge",
      "method:nyrl9z:getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge"
    ],
    "language": "csharp",
    "confidence": 0.98,
    "lineSpan": {
      "start": 150,
      "end": 200
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "line": 150,
        "summary": "Control-flow fragment extracted for method GetProfileInternalAsync.",
        "kind": "file-summary"
      }
    ]
  },
  {
    "fragmentId": "method:nb75z9:refreshtokenasync__fragment",
    "ownerFileId": "file:b8uv8h:identityservice-cs",
    "ownerSymbolId": "method:nb75z9:refreshtokenasync",
    "ownerSymbolName": "RefreshTokenAsync",
    "entryNodeId": "method:nb75z9:refreshtokenasync__entry",
    "exitNodeIds": [
      "method:nb75z9:refreshtokenasync__action_241_refreshtokenasync_return_241_18__return",
      "method:nb75z9:refreshtokenasync__action_241_return_241__return",
      "method:nb75z9:refreshtokenasync__action_244_refreshtokenasync_return_244_19__return",
      "method:nb75z9:refreshtokenasync__action_248_refreshtokenasync_return_248_21__return"
    ],
    "nodes": [
      {
        "id": "method:nb75z9:refreshtokenasync__entry",
        "kind": "entry",
        "label": "RefreshTokenAsync entry",
        "line": 202,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.99,
        "detail": "Attempts to refresh access token using stored refresh token, persists new tokens, invalidates auth state and refreshes profile information."
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_204_try_catch_204__linear",
        "kind": "statement",
        "label": "Refresh guarded",
        "line": 204,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Catches exceptions and returns Result.Fail with caused-by error"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_204_refreshtokenasync_try_204_0__try",
        "kind": "try",
        "label": "Begins protected execution",
        "line": 204,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84,
        "detail": "try"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_206_refreshtokenasync_await_206_1__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 206,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var result = await _storageService.GetSecureString(RefreshTokenKey);"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_206_INativeStorageService_GetSecureString",
        "kind": "call",
        "label": "INativeStorageService.GetSecureString",
        "line": 206,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "RefreshTokenKey"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__condition",
        "kind": "condition",
        "label": "string.IsNullOrEmpty(refreshToken)",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Returns Result.Fail when no stored refresh token"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__true",
        "kind": "branch-true",
        "label": "fail",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__false",
        "kind": "branch-false",
        "label": "continue",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__merge",
        "kind": "statement",
        "label": "merge",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition",
        "kind": "condition",
        "label": "string.IsNullOrEmpty(refreshToken)) return Result.Fail(\"Brak tokena odświeżania.\"",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.9,
        "detail": "if (string.IsNullOrEmpty(refreshToken)) return Result.Fail(\"Brak tokena odświeżania.\");"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__true",
        "kind": "branch-true",
        "label": "exit",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.9
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__false",
        "kind": "branch-false",
        "label": "continue",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.9
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge",
        "kind": "statement",
        "label": "merge",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.9
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_211_refreshtokenasync_await_211_3__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 211,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var response = await _httpClient.PostAsJsonAsync(\"identity/refresh\", new { refreshToken });"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_211_external_call_211__linear",
        "kind": "http-call",
        "label": "POST refresh",
        "line": 211,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Calls HttpClient.PostAsJsonAsync to 'identity/refresh' (framework call omitted from calls list)"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_branch_213__condition",
        "kind": "condition",
        "label": "response.IsSuccessStatusCode and loginResult.AccessToken present",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_branch_213__true",
        "kind": "branch-true",
        "label": "persist tokens and refresh profile",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_branch_213__false",
        "kind": "branch-false",
        "label": "return session expired",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_branch_213__merge",
        "kind": "statement",
        "label": "merge",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition",
        "kind": "condition",
        "label": "response.IsSuccessStatusCode",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (response.IsSuccessStatusCode)"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__true",
        "kind": "branch-true",
        "label": "true",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__false",
        "kind": "branch-false",
        "label": "false",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge",
        "kind": "statement",
        "label": "merge",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_215_refreshtokenasync_await_215_5__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 215,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var loginResult = await response.Content.ReadFromJsonAsync<LoginResponse>();"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition",
        "kind": "condition",
        "label": "loginResult != null && !string.IsNullOrEmpty(loginResult.AccessToken)",
        "line": 216,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (loginResult != null && !string.IsNullOrEmpty(loginResult.AccessToken))"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__true",
        "kind": "branch-true",
        "label": "true",
        "line": 216,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__false",
        "kind": "branch-false",
        "label": "false",
        "line": 216,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge",
        "kind": "statement",
        "label": "merge",
        "line": 216,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_218_refreshtokenasync_await_218_7__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 218,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(TokenKey, loginResult.AccessToken);"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_218_state_change_218__linear",
        "kind": "statement",
        "label": "Persist new tokens and invalidate state",
        "line": 218,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Saves new access/refresh tokens, clears cached profile, clears provider cache and invokes OnStateInvalidated"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_218_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 218,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "TokenKey, loginResult.AccessToken"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition",
        "kind": "condition",
        "label": "!string.IsNullOrEmpty(loginResult.RefreshToken)",
        "line": 219,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (!string.IsNullOrEmpty(loginResult.RefreshToken))"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__true",
        "kind": "branch-true",
        "label": "true",
        "line": 219,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__false",
        "kind": "branch-false",
        "label": "false",
        "line": 219,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge",
        "kind": "statement",
        "label": "merge",
        "line": 219,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_221_refreshtokenasync_await_221_9__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 221,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(RefreshTokenKey, loginResult.RefreshToken);"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_221_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 221,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "RefreshTokenKey, loginResult.RefreshToken"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache",
        "kind": "call",
        "label": "NexusAuthenticationStateProvider.ClearCache",
        "line": 225,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "cast _authStateProvider and call ClearCache"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_await_226_11__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "if (OnStateInvalidated != null) await OnStateInvalidated.Invoke();"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition",
        "kind": "condition",
        "label": "OnStateInvalidated != null) await OnStateInvalidated.Invoke(",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (OnStateInvalidated != null) await OnStateInvalidated.Invoke();"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__true",
        "kind": "branch-true",
        "label": "true",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__false",
        "kind": "branch-false",
        "label": "false",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge",
        "kind": "statement",
        "label": "merge",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_226_OnStateInvalidated_Invoke",
        "kind": "call",
        "label": "OnStateInvalidated.Invoke",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "invoke event if not null"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_228_refreshtokenasync_await_228_12__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 228,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "var profileResult = await GetProfileAsync();"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_228_orchestration_228__linear",
        "kind": "statement",
        "label": "Refresh profile after token renewal",
        "line": 228,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Calls GetProfileAsync and persists profile metadata on success"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_228_GetProfileAsync",
        "kind": "call",
        "label": "GetProfileAsync",
        "line": 228,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "no parameters"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition",
        "kind": "condition",
        "label": "profileResult.IsSuccess",
        "line": 229,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78,
        "detail": "if (profileResult.IsSuccess)"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__true",
        "kind": "branch-true",
        "label": "true",
        "line": 229,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__false",
        "kind": "branch-false",
        "label": "false",
        "line": 229,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge",
        "kind": "statement",
        "label": "merge",
        "line": 229,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_232_refreshtokenasync_await_232_14__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 232,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserEmail, profile.Email);"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_232_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 232,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserEmail, profile.Email"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_233_refreshtokenasync_await_233_15__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 233,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserTenant, profile.TenantId.ToString());"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_233_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 233,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserTenant, profile.TenantId.ToString()"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_236_refreshtokenasync_await_236_16__await",
        "kind": "await",
        "label": "Waits for async work",
        "line": 236,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81,
        "detail": "await _storageService.SaveSecureString(StorageKeys.UserRoles, rolesStr);"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_236_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "INativeStorageService.SaveSecureString",
        "line": 236,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "StorageKeys.UserRoles, rolesStr"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_238_refreshtokenasync_notification_238_17__linear",
        "kind": "publish-event",
        "label": "Sends notification",
        "line": 238,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.83,
        "detail": "(_authStateProvider as NexusAuthenticationStateProvider)?.NotifyUserAuthentication(profile.Email, profile.TenantId.ToString(), rolesStr);"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "kind": "call",
        "label": "NexusAuthenticationStateProvider.NotifyUserAuthentication",
        "line": 238,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88,
        "detail": "profile.Email, profile.TenantId.ToString(), rolesStr"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_241_refreshtokenasync_return_241_18__return",
        "kind": "return",
        "label": "Returns result",
        "line": 241,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Ok();"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_241_return_241__return",
        "kind": "return",
        "label": "Return final result",
        "line": 241,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "Returns Result.Ok() on success, Result.Fail on failure"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_244_refreshtokenasync_return_244_19__return",
        "kind": "return",
        "label": "Returns result",
        "line": 244,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Fail(\"Sesja wygasła.\");"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_246_refreshtokenasync_catch_246_20__catch",
        "kind": "catch",
        "label": "catch Exception ex",
        "line": 246,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86,
        "detail": "catch (Exception ex)"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_248_refreshtokenasync_return_248_21__return",
        "kind": "return",
        "label": "Returns result",
        "line": 248,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7,
        "detail": "return Result.Fail(new Error(\"Błąd odświeżania sesji.\").CausedBy(ex));"
      }
    ],
    "edges": [
      {
        "id": "method:nb75z9:refreshtokenasync__entry__method:nb75z9:refreshtokenasync__action_204_try_catch_204__linear",
        "from": "method:nb75z9:refreshtokenasync__entry",
        "to": "method:nb75z9:refreshtokenasync__action_204_try_catch_204__linear",
        "kind": "next",
        "line": 204,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_204_try_catch_204__linear__method:nb75z9:refreshtokenasync__action_204_refreshtokenasync_try_204_0__try",
        "from": "method:nb75z9:refreshtokenasync__action_204_try_catch_204__linear",
        "to": "method:nb75z9:refreshtokenasync__action_204_refreshtokenasync_try_204_0__try",
        "kind": "next",
        "line": 204,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.84
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_204_refreshtokenasync_try_204_0__try__method:nb75z9:refreshtokenasync__action_206_refreshtokenasync_await_206_1__await",
        "from": "method:nb75z9:refreshtokenasync__action_204_refreshtokenasync_try_204_0__try",
        "to": "method:nb75z9:refreshtokenasync__action_206_refreshtokenasync_await_206_1__await",
        "kind": "next",
        "line": 206,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_206_refreshtokenasync_await_206_1__await__call_method:nb75z9:refreshtokenasync__call_206_INativeStorageService_GetSecureString",
        "from": "method:nb75z9:refreshtokenasync__action_206_refreshtokenasync_await_206_1__await",
        "to": "method:nb75z9:refreshtokenasync__call_206_INativeStorageService_GetSecureString",
        "kind": "call",
        "label": "RefreshTokenKey",
        "line": 206,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_206_INativeStorageService_GetSecureString__method:nb75z9:refreshtokenasync__action_209_guard_clause_209__condition",
        "from": "method:nb75z9:refreshtokenasync__call_206_INativeStorageService_GetSecureString",
        "to": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__condition",
        "kind": "next",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__condition__method:nb75z9:refreshtokenasync__action_209_guard_clause_209__true",
        "from": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__condition",
        "to": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__true",
        "kind": "condition-true",
        "label": "fail",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__condition__method:nb75z9:refreshtokenasync__action_209_guard_clause_209__false",
        "from": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__condition",
        "to": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__false",
        "kind": "condition-false",
        "label": "continue",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__true__method:nb75z9:refreshtokenasync__action_209_guard_clause_209__merge",
        "from": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__true",
        "to": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__merge",
        "kind": "next",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__false__method:nb75z9:refreshtokenasync__action_209_guard_clause_209__merge",
        "from": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__false",
        "to": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__merge",
        "kind": "next",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__merge__method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition",
        "from": "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__merge",
        "to": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition",
        "kind": "next",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.9
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition__method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__true",
        "from": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition",
        "to": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__true",
        "kind": "condition-true",
        "label": "exit",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.9
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition__method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__false",
        "from": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition",
        "to": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__false",
        "kind": "condition-false",
        "label": "continue",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.9
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__true__method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge",
        "from": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__true",
        "to": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge",
        "kind": "next",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.9
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__false__method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge",
        "from": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__false",
        "to": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge",
        "kind": "next",
        "line": 209,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.9
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge__method:nb75z9:refreshtokenasync__action_211_refreshtokenasync_await_211_3__await",
        "from": "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge",
        "to": "method:nb75z9:refreshtokenasync__action_211_refreshtokenasync_await_211_3__await",
        "kind": "next",
        "line": 211,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_211_refreshtokenasync_await_211_3__await__method:nb75z9:refreshtokenasync__action_211_external_call_211__linear",
        "from": "method:nb75z9:refreshtokenasync__action_211_refreshtokenasync_await_211_3__await",
        "to": "method:nb75z9:refreshtokenasync__action_211_external_call_211__linear",
        "kind": "next",
        "line": 211,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_211_external_call_211__linear__method:nb75z9:refreshtokenasync__action_213_branch_213__condition",
        "from": "method:nb75z9:refreshtokenasync__action_211_external_call_211__linear",
        "to": "method:nb75z9:refreshtokenasync__action_213_branch_213__condition",
        "kind": "next",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_branch_213__condition__method:nb75z9:refreshtokenasync__action_213_branch_213__true",
        "from": "method:nb75z9:refreshtokenasync__action_213_branch_213__condition",
        "to": "method:nb75z9:refreshtokenasync__action_213_branch_213__true",
        "kind": "condition-true",
        "label": "persist tokens and refresh profile",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_branch_213__condition__method:nb75z9:refreshtokenasync__action_213_branch_213__false",
        "from": "method:nb75z9:refreshtokenasync__action_213_branch_213__condition",
        "to": "method:nb75z9:refreshtokenasync__action_213_branch_213__false",
        "kind": "condition-false",
        "label": "return session expired",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_branch_213__true__method:nb75z9:refreshtokenasync__action_213_branch_213__merge",
        "from": "method:nb75z9:refreshtokenasync__action_213_branch_213__true",
        "to": "method:nb75z9:refreshtokenasync__action_213_branch_213__merge",
        "kind": "next",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_branch_213__false__method:nb75z9:refreshtokenasync__action_213_branch_213__merge",
        "from": "method:nb75z9:refreshtokenasync__action_213_branch_213__false",
        "to": "method:nb75z9:refreshtokenasync__action_213_branch_213__merge",
        "kind": "next",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_branch_213__merge__method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition",
        "from": "method:nb75z9:refreshtokenasync__action_213_branch_213__merge",
        "to": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition",
        "kind": "next",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition__method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__true",
        "from": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition",
        "to": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__true",
        "kind": "condition-true",
        "label": "true",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition__method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__false",
        "from": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition",
        "to": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__false",
        "kind": "condition-false",
        "label": "false",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__true__method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge",
        "from": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__true",
        "to": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge",
        "kind": "next",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__false__method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge",
        "from": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__false",
        "to": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge",
        "kind": "next",
        "line": 213,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge__method:nb75z9:refreshtokenasync__action_215_refreshtokenasync_await_215_5__await",
        "from": "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge",
        "to": "method:nb75z9:refreshtokenasync__action_215_refreshtokenasync_await_215_5__await",
        "kind": "next",
        "line": 215,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_215_refreshtokenasync_await_215_5__await__method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition",
        "from": "method:nb75z9:refreshtokenasync__action_215_refreshtokenasync_await_215_5__await",
        "to": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition",
        "kind": "next",
        "line": 216,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition__method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__true",
        "from": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition",
        "to": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__true",
        "kind": "condition-true",
        "label": "true",
        "line": 216,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition__method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__false",
        "from": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition",
        "to": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__false",
        "kind": "condition-false",
        "label": "false",
        "line": 216,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__true__method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge",
        "from": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__true",
        "to": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge",
        "kind": "next",
        "line": 216,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__false__method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge",
        "from": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__false",
        "to": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge",
        "kind": "next",
        "line": 216,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge__method:nb75z9:refreshtokenasync__action_218_refreshtokenasync_await_218_7__await",
        "from": "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge",
        "to": "method:nb75z9:refreshtokenasync__action_218_refreshtokenasync_await_218_7__await",
        "kind": "next",
        "line": 218,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_218_refreshtokenasync_await_218_7__await__method:nb75z9:refreshtokenasync__action_218_state_change_218__linear",
        "from": "method:nb75z9:refreshtokenasync__action_218_refreshtokenasync_await_218_7__await",
        "to": "method:nb75z9:refreshtokenasync__action_218_state_change_218__linear",
        "kind": "next",
        "line": 218,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_218_state_change_218__linear__call_method:nb75z9:refreshtokenasync__call_218_INativeStorageService_SaveSecureString",
        "from": "method:nb75z9:refreshtokenasync__action_218_state_change_218__linear",
        "to": "method:nb75z9:refreshtokenasync__call_218_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "TokenKey, loginResult.AccessToken",
        "line": 218,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_218_INativeStorageService_SaveSecureString__method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition",
        "from": "method:nb75z9:refreshtokenasync__call_218_INativeStorageService_SaveSecureString",
        "to": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition",
        "kind": "next",
        "line": 219,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition__method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__true",
        "from": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition",
        "to": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__true",
        "kind": "condition-true",
        "label": "true",
        "line": 219,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition__method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__false",
        "from": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition",
        "to": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__false",
        "kind": "condition-false",
        "label": "false",
        "line": 219,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__true__method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge",
        "from": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__true",
        "to": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge",
        "kind": "next",
        "line": 219,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__false__method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge",
        "from": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__false",
        "to": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge",
        "kind": "next",
        "line": 219,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge__method:nb75z9:refreshtokenasync__action_221_refreshtokenasync_await_221_9__await",
        "from": "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge",
        "to": "method:nb75z9:refreshtokenasync__action_221_refreshtokenasync_await_221_9__await",
        "kind": "next",
        "line": 221,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_221_refreshtokenasync_await_221_9__await__call_method:nb75z9:refreshtokenasync__call_221_INativeStorageService_SaveSecureString",
        "from": "method:nb75z9:refreshtokenasync__action_221_refreshtokenasync_await_221_9__await",
        "to": "method:nb75z9:refreshtokenasync__call_221_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "RefreshTokenKey, loginResult.RefreshToken",
        "line": 221,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_221_INativeStorageService_SaveSecureString__call_method:nb75z9:refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache",
        "from": "method:nb75z9:refreshtokenasync__call_221_INativeStorageService_SaveSecureString",
        "to": "method:nb75z9:refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache",
        "kind": "call",
        "label": "cast _authStateProvider and call ClearCache",
        "line": 225,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache__method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_await_226_11__await",
        "from": "method:nb75z9:refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache",
        "to": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_await_226_11__await",
        "kind": "next",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_await_226_11__await__method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition",
        "from": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_await_226_11__await",
        "to": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition",
        "kind": "next",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition__method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__true",
        "from": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition",
        "to": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__true",
        "kind": "condition-true",
        "label": "true",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition__method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__false",
        "from": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition",
        "to": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__false",
        "kind": "condition-false",
        "label": "false",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__true__method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge",
        "from": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__true",
        "to": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge",
        "kind": "next",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__false__method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge",
        "from": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__false",
        "to": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge",
        "kind": "next",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge__call_method:nb75z9:refreshtokenasync__call_226_OnStateInvalidated_Invoke",
        "from": "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge",
        "to": "method:nb75z9:refreshtokenasync__call_226_OnStateInvalidated_Invoke",
        "kind": "call",
        "label": "invoke event if not null",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_226_OnStateInvalidated_Invoke__method:nb75z9:refreshtokenasync__action_228_refreshtokenasync_await_228_12__await",
        "from": "method:nb75z9:refreshtokenasync__call_226_OnStateInvalidated_Invoke",
        "to": "method:nb75z9:refreshtokenasync__action_228_refreshtokenasync_await_228_12__await",
        "kind": "next",
        "line": 228,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_228_refreshtokenasync_await_228_12__await__method:nb75z9:refreshtokenasync__action_228_orchestration_228__linear",
        "from": "method:nb75z9:refreshtokenasync__action_228_refreshtokenasync_await_228_12__await",
        "to": "method:nb75z9:refreshtokenasync__action_228_orchestration_228__linear",
        "kind": "next",
        "line": 228,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_228_orchestration_228__linear__call_method:nb75z9:refreshtokenasync__call_228_GetProfileAsync",
        "from": "method:nb75z9:refreshtokenasync__action_228_orchestration_228__linear",
        "to": "method:nb75z9:refreshtokenasync__call_228_GetProfileAsync",
        "kind": "call",
        "label": "no parameters",
        "line": 228,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_228_GetProfileAsync__method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition",
        "from": "method:nb75z9:refreshtokenasync__call_228_GetProfileAsync",
        "to": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition",
        "kind": "next",
        "line": 229,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition__method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__true",
        "from": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition",
        "to": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__true",
        "kind": "condition-true",
        "label": "true",
        "line": 229,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition__method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__false",
        "from": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition",
        "to": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__false",
        "kind": "condition-false",
        "label": "false",
        "line": 229,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__true__method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge",
        "from": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__true",
        "to": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge",
        "kind": "next",
        "line": 229,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__false__method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge",
        "from": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__false",
        "to": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge",
        "kind": "next",
        "line": 229,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.78
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge__method:nb75z9:refreshtokenasync__action_232_refreshtokenasync_await_232_14__await",
        "from": "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge",
        "to": "method:nb75z9:refreshtokenasync__action_232_refreshtokenasync_await_232_14__await",
        "kind": "next",
        "line": 232,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_232_refreshtokenasync_await_232_14__await__call_method:nb75z9:refreshtokenasync__call_232_INativeStorageService_SaveSecureString",
        "from": "method:nb75z9:refreshtokenasync__action_232_refreshtokenasync_await_232_14__await",
        "to": "method:nb75z9:refreshtokenasync__call_232_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserEmail, profile.Email",
        "line": 232,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_232_INativeStorageService_SaveSecureString__method:nb75z9:refreshtokenasync__action_233_refreshtokenasync_await_233_15__await",
        "from": "method:nb75z9:refreshtokenasync__call_232_INativeStorageService_SaveSecureString",
        "to": "method:nb75z9:refreshtokenasync__action_233_refreshtokenasync_await_233_15__await",
        "kind": "next",
        "line": 233,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_233_refreshtokenasync_await_233_15__await__call_method:nb75z9:refreshtokenasync__call_233_INativeStorageService_SaveSecureString",
        "from": "method:nb75z9:refreshtokenasync__action_233_refreshtokenasync_await_233_15__await",
        "to": "method:nb75z9:refreshtokenasync__call_233_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserTenant, profile.TenantId.ToString()",
        "line": 233,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_233_INativeStorageService_SaveSecureString__method:nb75z9:refreshtokenasync__action_236_refreshtokenasync_await_236_16__await",
        "from": "method:nb75z9:refreshtokenasync__call_233_INativeStorageService_SaveSecureString",
        "to": "method:nb75z9:refreshtokenasync__action_236_refreshtokenasync_await_236_16__await",
        "kind": "next",
        "line": 236,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.81
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_236_refreshtokenasync_await_236_16__await__call_method:nb75z9:refreshtokenasync__call_236_INativeStorageService_SaveSecureString",
        "from": "method:nb75z9:refreshtokenasync__action_236_refreshtokenasync_await_236_16__await",
        "to": "method:nb75z9:refreshtokenasync__call_236_INativeStorageService_SaveSecureString",
        "kind": "call",
        "label": "StorageKeys.UserRoles, rolesStr",
        "line": 236,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_236_INativeStorageService_SaveSecureString__method:nb75z9:refreshtokenasync__action_238_refreshtokenasync_notification_238_17__linear",
        "from": "method:nb75z9:refreshtokenasync__call_236_INativeStorageService_SaveSecureString",
        "to": "method:nb75z9:refreshtokenasync__action_238_refreshtokenasync_notification_238_17__linear",
        "kind": "next",
        "line": 238,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.83
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_238_refreshtokenasync_notification_238_17__linear__call_method:nb75z9:refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "from": "method:nb75z9:refreshtokenasync__action_238_refreshtokenasync_notification_238_17__linear",
        "to": "method:nb75z9:refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "kind": "call",
        "label": "profile.Email, profile.TenantId.ToString(), rolesStr",
        "line": 238,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.88
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication__method:nb75z9:refreshtokenasync__action_241_refreshtokenasync_return_241_18__return",
        "from": "method:nb75z9:refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "to": "method:nb75z9:refreshtokenasync__action_241_refreshtokenasync_return_241_18__return",
        "kind": "return",
        "line": 241,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_241_refreshtokenasync_return_241_18__return__method:nb75z9:refreshtokenasync__action_241_return_241__return",
        "from": "method:nb75z9:refreshtokenasync__action_241_refreshtokenasync_return_241_18__return",
        "to": "method:nb75z9:refreshtokenasync__action_241_return_241__return",
        "kind": "return",
        "line": 241,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_241_return_241__return__method:nb75z9:refreshtokenasync__action_244_refreshtokenasync_return_244_19__return",
        "from": "method:nb75z9:refreshtokenasync__action_241_return_241__return",
        "to": "method:nb75z9:refreshtokenasync__action_244_refreshtokenasync_return_244_19__return",
        "kind": "return",
        "line": 244,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_244_refreshtokenasync_return_244_19__return__method:nb75z9:refreshtokenasync__action_246_refreshtokenasync_catch_246_20__catch",
        "from": "method:nb75z9:refreshtokenasync__action_244_refreshtokenasync_return_244_19__return",
        "to": "method:nb75z9:refreshtokenasync__action_246_refreshtokenasync_catch_246_20__catch",
        "kind": "exception",
        "line": 246,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.86
      },
      {
        "id": "method:nb75z9:refreshtokenasync__action_246_refreshtokenasync_catch_246_20__catch__method:nb75z9:refreshtokenasync__action_248_refreshtokenasync_return_248_21__return",
        "from": "method:nb75z9:refreshtokenasync__action_246_refreshtokenasync_catch_246_20__catch",
        "to": "method:nb75z9:refreshtokenasync__action_248_refreshtokenasync_return_248_21__return",
        "kind": "return",
        "line": 248,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "confidence": 0.7
      }
    ],
    "jumpTargets": [
      {
        "id": "method:nb75z9:refreshtokenasync__call_206_INativeStorageService_GetSecureString__jump_unknown_INativeStorageService_GetSecureString",
        "fromNodeId": "method:nb75z9:refreshtokenasync__call_206_INativeStorageService_GetSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.GetSecureString",
        "line": 206,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.GetSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_218_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:nb75z9:refreshtokenasync__call_218_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 218,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_221_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:nb75z9:refreshtokenasync__call_221_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 221,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache__jump_unknown_NexusAuthenticationStateProvider_ClearCache",
        "fromNodeId": "method:nb75z9:refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "NexusAuthenticationStateProvider.ClearCache",
        "line": 225,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target NexusAuthenticationStateProvider.ClearCache in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_226_OnStateInvalidated_Invoke__jump_NexusReader_UI_Shared_Services_IdentityService_cs_OnStateInvalidated_Invoke",
        "fromNodeId": "method:nb75z9:refreshtokenasync__call_226_OnStateInvalidated_Invoke",
        "kind": "call-target",
        "targetPath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "targetHint": "OnStateInvalidated.Invoke",
        "line": 226,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target OnStateInvalidated.Invoke in NexusReader.UI.Shared/Services/IdentityService.cs could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_228_GetProfileAsync__jump_NexusReader_UI_Shared_Services_IdentityService_cs_GetProfileAsync",
        "fromNodeId": "method:nb75z9:refreshtokenasync__call_228_GetProfileAsync",
        "kind": "call-target",
        "targetNodeId": "method:1u6514u:getprofileasync",
        "targetPath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "targetHint": "GetProfileAsync",
        "line": 228,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target GetProfileAsync resolved to NexusReader.UI.Shared/Services/IdentityService.cs.",
        "status": "resolved"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_232_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:nb75z9:refreshtokenasync__call_232_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 232,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_233_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:nb75z9:refreshtokenasync__call_233_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 233,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_236_INativeStorageService_SaveSecureString__jump_unknown_INativeStorageService_SaveSecureString",
        "fromNodeId": "method:nb75z9:refreshtokenasync__call_236_INativeStorageService_SaveSecureString",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "INativeStorageService.SaveSecureString",
        "line": 236,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      },
      {
        "id": "method:nb75z9:refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication__jump_unknown_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "fromNodeId": "method:nb75z9:refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication",
        "kind": "call-target",
        "targetPath": "unknown",
        "targetHint": "NexusAuthenticationStateProvider.NotifyUserAuthentication",
        "line": 238,
        "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "reason": "Call target NexusAuthenticationStateProvider.NotifyUserAuthentication in unknown could not be matched to an extracted method symbol.",
        "status": "unresolved"
      }
    ],
    "exceptionTargets": [],
    "loopBackEdges": [],
    "mergeNodeIds": [
      "method:nb75z9:refreshtokenasync__action_209_guard_clause_209__merge",
      "method:nb75z9:refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge",
      "method:nb75z9:refreshtokenasync__action_213_branch_213__merge",
      "method:nb75z9:refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge",
      "method:nb75z9:refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge",
      "method:nb75z9:refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge",
      "method:nb75z9:refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge",
      "method:nb75z9:refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge"
    ],
    "language": "csharp",
    "confidence": 0.98,
    "lineSpan": {
      "start": 202,
      "end": 250
    },
    "unsupportedConstructs": [],
    "evidence": [
      {
        "path": "NexusReader.UI.Shared/Services/IdentityService.cs",
        "line": 202,
        "summary": "Control-flow fragment extracted for method RefreshTokenAsync.",
        "kind": "file-summary"
      }
    ]
  }
]