{
  "version": 1,
  "generatedAt": "2026-05-25T11:41:33.166Z",
  "fileId": "file:b8uv8h:identityservice-cs",
  "executableScope": true,
  "executableSymbolCount": 7,
  "fileNodeId": "file:b8uv8h:identityservice-cs",
  "symbolNodeIds": [
    "class:vgua1e:identityservice",
    "method:8ggznb:identityservice",
    "method:kf6qfg:registerasync",
    "method:b6asoe:loginasync",
    "method:1i33wis:logoutasync",
    "method:1u6514u:getprofileasync",
    "method:nyrl9z:getprofileinternalasync",
    "method:nb75z9:refreshtokenasync",
    "type:14gvkuy:loginresponse"
  ],
  "containmentEdgeIds": [
    "edge:1p9than:contains",
    "edge:1smdrhp:contains",
    "edge:fvq6ww:contains",
    "edge:lpim5f:contains",
    "edge:1nc3lov:contains",
    "edge:13jfz8e:contains",
    "edge:2cxtao:contains",
    "edge:wbtsa5:contains",
    "edge:1dw194i:defines-type"
  ],
  "relationshipEdgeIds": [
    "edge:1p9than:contains",
    "edge:1smdrhp:contains",
    "edge:fvq6ww:contains",
    "edge:lpim5f:contains",
    "edge:1nc3lov:contains",
    "edge:13jfz8e:contains",
    "edge:2cxtao:contains",
    "edge:wbtsa5:contains",
    "edge:1dw194i:defines-type"
  ],
  "integrationEdgeIds": [],
  "controlFlowFragments": [
    {
      "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"
        }
      ]
    }
  ],
  "unresolvedJumps": [
    {
      "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_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"
    },
    {
      "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"
    },
    {
      "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"
    },
    {
      "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_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"
    }
  ],
  "diagrams": [
    {
      "id": "file_b8uv8h_identityservice_cs_neighborhood_view",
      "purpose": "neighborhood-view",
      "title": "IdentityService Neighborhood",
      "required": true,
      "diagram": {
        "id": "file_b8uv8h_identityservice_cs_neighborhood_view",
        "kind": "dependency-map",
        "title": "IdentityService Neighborhood",
        "direction": "LR",
        "nodes": [
          {
            "id": "file_b8uv8h_identityservice_cs",
            "kind": "service",
            "label": "IdentityService",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs"
          },
          {
            "id": "class_vgua1e_identityservice",
            "kind": "service",
            "label": "IdentityService",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs"
          },
          {
            "id": "method_8ggznb_identityservice",
            "kind": "method",
            "label": "IdentityService()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 23
          },
          {
            "id": "method_kf6qfg_registerasync",
            "kind": "method",
            "label": "RegisterAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 33
          },
          {
            "id": "method_b6asoe_loginasync",
            "kind": "method",
            "label": "LoginAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 46
          },
          {
            "id": "method_1i33wis_logoutasync",
            "kind": "method",
            "label": "LogoutAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 104
          },
          {
            "id": "method_1u6514u_getprofileasync",
            "kind": "method",
            "label": "GetProfileAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 130
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync",
            "kind": "method",
            "label": "GetProfileInternalAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 150
          },
          {
            "id": "method_nb75z9_refreshtokenasync",
            "kind": "method",
            "label": "RefreshTokenAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 202
          },
          {
            "id": "type_14gvkuy_loginresponse",
            "kind": "document",
            "label": "LoginResponse",
            "shape": "doc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 252
          }
        ],
        "edges": [],
        "metadata": {
          "evidencePaths": [
            "NexusReader.UI.Shared/Services/IdentityService.cs"
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart LR\n    class_vgua1e_identityservice(\"IdentityService\")\n    file_b8uv8h_identityservice_cs(\"IdentityService\")\n    method_1i33wis_logoutasync[[\"LogoutAsync()\"]]\n    method_1u6514u_getprofileasync[[\"GetProfileAsync()\"]]\n    method_8ggznb_identityservice[[\"IdentityService()\"]]\n    method_b6asoe_loginasync[[\"LoginAsync()\"]]\n    method_kf6qfg_registerasync[[\"RegisterAsync()\"]]\n    method_nb75z9_refreshtokenasync[[\"RefreshTokenAsync()\"]]\n    method_nyrl9z_getprofileinternalasync[[\"GetProfileInternalAsync()\"]]\n    type_14gvkuy_loginresponse[/\"LoginResponse\"/]",
      "warnings": []
    },
    {
      "id": "file_b8uv8h_identityservice_cs_execution_view",
      "purpose": "execution-overview",
      "title": "IdentityService Execution Overview",
      "required": true,
      "diagram": {
        "id": "file_b8uv8h_identityservice_cs_execution_view",
        "kind": "method-flow",
        "title": "IdentityService Execution Overview",
        "direction": "TD",
        "nodes": [
          {
            "id": "class_vgua1e_identityservice",
            "kind": "service",
            "label": "IdentityService",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs"
          },
          {
            "id": "method_8ggznb_identityservice",
            "kind": "method",
            "label": "IdentityService()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 23
          },
          {
            "id": "method_kf6qfg_registerasync",
            "kind": "method",
            "label": "RegisterAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 33
          },
          {
            "id": "method_b6asoe_loginasync",
            "kind": "method",
            "label": "LoginAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 46
          },
          {
            "id": "method_1i33wis_logoutasync",
            "kind": "method",
            "label": "LogoutAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 104
          },
          {
            "id": "method_1u6514u_getprofileasync",
            "kind": "method",
            "label": "GetProfileAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 130
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync",
            "kind": "method",
            "label": "GetProfileInternalAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 150
          },
          {
            "id": "method_nb75z9_refreshtokenasync",
            "kind": "method",
            "label": "RefreshTokenAsync()",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 202
          },
          {
            "id": "unresolved_unresolved_1v3p4g4_call_target",
            "kind": "prompt",
            "label": "Unresolved: GetProfileAsync",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 77
          },
          {
            "id": "unresolved_unresolved_1u6whi4_call_target",
            "kind": "prompt",
            "label": "Unresolved: INativeStorageService.SaveSecureString",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 67
          },
          {
            "id": "unresolved_unresolved_7bj2q1_call_target",
            "kind": "prompt",
            "label": "Unresolved: NexusAuthenticationStateProvider.ClearCache",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 74
          },
          {
            "id": "unresolved_unresolved_1atdq4u_call_target",
            "kind": "prompt",
            "label": "Unresolved: OnStateInvalidated.Invoke",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "id": "unresolved_unresolved_1e40o4e_call_target",
            "kind": "prompt",
            "label": "Unresolved: NexusAuthenticationStateProvider.NotifyUserAuthentication",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 87
          },
          {
            "id": "unresolved_unresolved_r45bnc_call_target",
            "kind": "prompt",
            "label": "Unresolved: INativeStorageService.SaveSecureString",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 111
          },
          {
            "id": "unresolved_unresolved_7cdvii_call_target",
            "kind": "prompt",
            "label": "Unresolved: OnStateInvalidated.Invoke",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "id": "unresolved_unresolved_wlkdyl_call_target",
            "kind": "prompt",
            "label": "Unresolved: NexusAuthenticationStateProvider.ClearCache",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 119
          },
          {
            "id": "unresolved_unresolved_1h591k0_call_target",
            "kind": "prompt",
            "label": "Unresolved: NexusAuthenticationStateProvider.NotifyUserLogout",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 120
          },
          {
            "id": "unresolved_unresolved_iwmd6s_call_target",
            "kind": "prompt",
            "label": "Unresolved: GetProfileInternalAsync",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 143
          },
          {
            "id": "unresolved_unresolved_wkcuys_call_target",
            "kind": "prompt",
            "label": "Unresolved: LogoutAsync",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 169
          },
          {
            "id": "unresolved_unresolved_kf4wfl_call_target",
            "kind": "prompt",
            "label": "Unresolved: INativeStorageService.SaveSecureString",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 179
          },
          {
            "id": "unresolved_unresolved_1wraerh_call_target",
            "kind": "prompt",
            "label": "Unresolved: NexusAuthenticationStateProvider.NotifyUserAuthentication",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 185
          },
          {
            "id": "unresolved_unresolved_10fc8rp_call_target",
            "kind": "prompt",
            "label": "Unresolved: INativeStorageService.GetSecureString",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 206
          },
          {
            "id": "unresolved_unresolved_19pszpm_call_target",
            "kind": "prompt",
            "label": "Unresolved: INativeStorageService.SaveSecureString",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 218
          },
          {
            "id": "unresolved_unresolved_y9kokj_call_target",
            "kind": "prompt",
            "label": "Unresolved: NexusAuthenticationStateProvider.ClearCache",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 225
          },
          {
            "id": "unresolved_unresolved_1gkugkk_call_target",
            "kind": "prompt",
            "label": "Unresolved: OnStateInvalidated.Invoke",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "id": "unresolved_unresolved_qhvr5q_call_target",
            "kind": "prompt",
            "label": "Unresolved: GetProfileAsync",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 228
          },
          {
            "id": "unresolved_unresolved_1gvn8f0_call_target",
            "kind": "prompt",
            "label": "Unresolved: NexusAuthenticationStateProvider.NotifyUserAuthentication",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 238
          },
          {
            "id": "unresolved_unresolved_159kzo2_interaction_target",
            "kind": "prompt",
            "label": "Unresolved: Calls HttpClient.PostAsJsonAsync to 'identity/register' (framework call omitted from calls list)",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 37
          },
          {
            "id": "unresolved_unresolved_sdsrv_interaction_target",
            "kind": "prompt",
            "label": "Unresolved: HttpClient.GetAsync('identity/profile') (framework call omitted from calls list)",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 165
          },
          {
            "id": "unresolved_unresolved_1qta35c_interaction_target",
            "kind": "prompt",
            "label": "Unresolved: Calls HttpClient.PostAsJsonAsync to 'identity/refresh' (framework call omitted from calls list)",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 211
          }
        ],
        "edges": [
          {
            "id": "class_vgua1e_identityservice_contains_method_8ggznb_identityservice",
            "from": "class_vgua1e_identityservice",
            "to": "method_8ggznb_identityservice",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 23
          },
          {
            "id": "class_vgua1e_identityservice_contains_method_kf6qfg_registerasync",
            "from": "class_vgua1e_identityservice",
            "to": "method_kf6qfg_registerasync",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 33
          },
          {
            "id": "class_vgua1e_identityservice_contains_method_b6asoe_loginasync",
            "from": "class_vgua1e_identityservice",
            "to": "method_b6asoe_loginasync",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 46
          },
          {
            "id": "class_vgua1e_identityservice_contains_method_1i33wis_logoutasync",
            "from": "class_vgua1e_identityservice",
            "to": "method_1i33wis_logoutasync",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 104
          },
          {
            "id": "class_vgua1e_identityservice_contains_method_1u6514u_getprofileasync",
            "from": "class_vgua1e_identityservice",
            "to": "method_1u6514u_getprofileasync",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 130
          },
          {
            "id": "class_vgua1e_identityservice_contains_method_nyrl9z_getprofileinternalasync",
            "from": "class_vgua1e_identityservice",
            "to": "method_nyrl9z_getprofileinternalasync",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 150
          },
          {
            "id": "class_vgua1e_identityservice_contains_method_nb75z9_refreshtokenasync",
            "from": "class_vgua1e_identityservice",
            "to": "method_nb75z9_refreshtokenasync",
            "semanticLabel": "contains executable method",
            "visibleLabel": "contains",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 202
          },
          {
            "id": "unresolved_1v3p4g4_call_target_edge",
            "from": "method_b6asoe_loginasync",
            "to": "unresolved_unresolved_1v3p4g4_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 77
          },
          {
            "id": "unresolved_1u6whi4_call_target_edge",
            "from": "method_b6asoe_loginasync",
            "to": "unresolved_unresolved_1u6whi4_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 67
          },
          {
            "id": "unresolved_1u6whi4_call_target_edge",
            "from": "method_b6asoe_loginasync",
            "to": "unresolved_unresolved_1u6whi4_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 70
          },
          {
            "id": "unresolved_1u6whi4_call_target_edge",
            "from": "method_b6asoe_loginasync",
            "to": "unresolved_unresolved_1u6whi4_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 81
          },
          {
            "id": "unresolved_1u6whi4_call_target_edge",
            "from": "method_b6asoe_loginasync",
            "to": "unresolved_unresolved_1u6whi4_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 82
          },
          {
            "id": "unresolved_1u6whi4_call_target_edge",
            "from": "method_b6asoe_loginasync",
            "to": "unresolved_unresolved_1u6whi4_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 85
          },
          {
            "id": "unresolved_7bj2q1_call_target_edge",
            "from": "method_b6asoe_loginasync",
            "to": "unresolved_unresolved_7bj2q1_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 74
          },
          {
            "id": "unresolved_1atdq4u_call_target_edge",
            "from": "method_b6asoe_loginasync",
            "to": "unresolved_unresolved_1atdq4u_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "id": "unresolved_1e40o4e_call_target_edge",
            "from": "method_b6asoe_loginasync",
            "to": "unresolved_unresolved_1e40o4e_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 87
          },
          {
            "id": "unresolved_r45bnc_call_target_edge",
            "from": "method_1i33wis_logoutasync",
            "to": "unresolved_unresolved_r45bnc_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 111
          },
          {
            "id": "unresolved_r45bnc_call_target_edge",
            "from": "method_1i33wis_logoutasync",
            "to": "unresolved_unresolved_r45bnc_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 112
          },
          {
            "id": "unresolved_r45bnc_call_target_edge",
            "from": "method_1i33wis_logoutasync",
            "to": "unresolved_unresolved_r45bnc_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 113
          },
          {
            "id": "unresolved_r45bnc_call_target_edge",
            "from": "method_1i33wis_logoutasync",
            "to": "unresolved_unresolved_r45bnc_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 114
          },
          {
            "id": "unresolved_r45bnc_call_target_edge",
            "from": "method_1i33wis_logoutasync",
            "to": "unresolved_unresolved_r45bnc_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 115
          },
          {
            "id": "unresolved_7cdvii_call_target_edge",
            "from": "method_1i33wis_logoutasync",
            "to": "unresolved_unresolved_7cdvii_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "id": "unresolved_wlkdyl_call_target_edge",
            "from": "method_1i33wis_logoutasync",
            "to": "unresolved_unresolved_wlkdyl_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 119
          },
          {
            "id": "unresolved_1h591k0_call_target_edge",
            "from": "method_1i33wis_logoutasync",
            "to": "unresolved_unresolved_1h591k0_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 120
          },
          {
            "id": "unresolved_iwmd6s_call_target_edge",
            "from": "method_1u6514u_getprofileasync",
            "to": "unresolved_unresolved_iwmd6s_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 143
          },
          {
            "id": "unresolved_wkcuys_call_target_edge",
            "from": "method_nyrl9z_getprofileinternalasync",
            "to": "unresolved_unresolved_wkcuys_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 169
          },
          {
            "id": "unresolved_kf4wfl_call_target_edge",
            "from": "method_nyrl9z_getprofileinternalasync",
            "to": "unresolved_unresolved_kf4wfl_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 179
          },
          {
            "id": "unresolved_kf4wfl_call_target_edge",
            "from": "method_nyrl9z_getprofileinternalasync",
            "to": "unresolved_unresolved_kf4wfl_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 180
          },
          {
            "id": "unresolved_kf4wfl_call_target_edge",
            "from": "method_nyrl9z_getprofileinternalasync",
            "to": "unresolved_unresolved_kf4wfl_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 183
          },
          {
            "id": "unresolved_1wraerh_call_target_edge",
            "from": "method_nyrl9z_getprofileinternalasync",
            "to": "unresolved_unresolved_1wraerh_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 185
          },
          {
            "id": "unresolved_10fc8rp_call_target_edge",
            "from": "method_nb75z9_refreshtokenasync",
            "to": "unresolved_unresolved_10fc8rp_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 206
          },
          {
            "id": "unresolved_19pszpm_call_target_edge",
            "from": "method_nb75z9_refreshtokenasync",
            "to": "unresolved_unresolved_19pszpm_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 218
          },
          {
            "id": "unresolved_19pszpm_call_target_edge",
            "from": "method_nb75z9_refreshtokenasync",
            "to": "unresolved_unresolved_19pszpm_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 221
          },
          {
            "id": "unresolved_y9kokj_call_target_edge",
            "from": "method_nb75z9_refreshtokenasync",
            "to": "unresolved_unresolved_y9kokj_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 225
          },
          {
            "id": "unresolved_1gkugkk_call_target_edge",
            "from": "method_nb75z9_refreshtokenasync",
            "to": "unresolved_unresolved_1gkugkk_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "id": "unresolved_qhvr5q_call_target_edge",
            "from": "method_nb75z9_refreshtokenasync",
            "to": "unresolved_unresolved_qhvr5q_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 228
          },
          {
            "id": "unresolved_19pszpm_call_target_edge",
            "from": "method_nb75z9_refreshtokenasync",
            "to": "unresolved_unresolved_19pszpm_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 232
          },
          {
            "id": "unresolved_19pszpm_call_target_edge",
            "from": "method_nb75z9_refreshtokenasync",
            "to": "unresolved_unresolved_19pszpm_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 233
          },
          {
            "id": "unresolved_19pszpm_call_target_edge",
            "from": "method_nb75z9_refreshtokenasync",
            "to": "unresolved_unresolved_19pszpm_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 236
          },
          {
            "id": "unresolved_1gvn8f0_call_target_edge",
            "from": "method_nb75z9_refreshtokenasync",
            "to": "unresolved_unresolved_1gvn8f0_call_target",
            "semanticLabel": "Call target was discovered in the summary but could not be matched to an extracted method symbol.",
            "visibleLabel": "unresolved call",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 238
          },
          {
            "id": "unresolved_159kzo2_interaction_target_edge",
            "from": "class_vgua1e_identityservice",
            "to": "unresolved_unresolved_159kzo2_interaction_target",
            "semanticLabel": "Interaction was identified in the file summary but does not yet map to a stable V5 target node.",
            "visibleLabel": "unresolved interaction",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 37
          },
          {
            "id": "unresolved_sdsrv_interaction_target_edge",
            "from": "class_vgua1e_identityservice",
            "to": "unresolved_unresolved_sdsrv_interaction_target",
            "semanticLabel": "Interaction was identified in the file summary but does not yet map to a stable V5 target node.",
            "visibleLabel": "unresolved interaction",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 165
          },
          {
            "id": "unresolved_1qta35c_interaction_target_edge",
            "from": "class_vgua1e_identityservice",
            "to": "unresolved_unresolved_1qta35c_interaction_target",
            "semanticLabel": "Interaction was identified in the file summary but does not yet map to a stable V5 target node.",
            "visibleLabel": "unresolved interaction",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 211
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.UI.Shared/Services/IdentityService.cs"
          ],
          "warnings": [
            "Execution overview includes unresolved targets. Use validation artifacts before treating the flow as complete."
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "---\nconfig:\n  flowchart:\n    defaultRenderer: \"elk\"\n---\nflowchart TD\n    class_vgua1e_identityservice(\"IdentityService\")\n    method_1i33wis_logoutasync[[\"LogoutAsync()\"]]\n    method_1u6514u_getprofileasync[[\"GetProfileAsync()\"]]\n    method_8ggznb_identityservice[[\"IdentityService()\"]]\n    method_b6asoe_loginasync[[\"LoginAsync()\"]]\n    method_kf6qfg_registerasync[[\"RegisterAsync()\"]]\n    method_nb75z9_refreshtokenasync[[\"RefreshTokenAsync()\"]]\n    method_nyrl9z_getprofileinternalasync[[\"GetProfileInternalAsync()\"]]\n    unresolved_unresolved_10fc8rp_call_target{\"Unresolved: INativeStorageService.GetSecureString\"}\n    unresolved_unresolved_159kzo2_interaction_target{\"Unresolved: Calls HttpClient.PostAsJsonAsync to 'identity/register' (framework call omitted from calls list)\"}\n    unresolved_unresolved_19pszpm_call_target{\"Unresolved: INativeStorageService.SaveSecureString\"}\n    unresolved_unresolved_1atdq4u_call_target{\"Unresolved: OnStateInvalidated.Invoke\"}\n    unresolved_unresolved_1e40o4e_call_target{\"Unresolved: NexusAuthenticationStateProvider.NotifyUserAuthentication\"}\n    unresolved_unresolved_1gkugkk_call_target{\"Unresolved: OnStateInvalidated.Invoke\"}\n    unresolved_unresolved_1gvn8f0_call_target{\"Unresolved: NexusAuthenticationStateProvider.NotifyUserAuthentication\"}\n    unresolved_unresolved_1h591k0_call_target{\"Unresolved: NexusAuthenticationStateProvider.NotifyUserLogout\"}\n    unresolved_unresolved_1qta35c_interaction_target{\"Unresolved: Calls HttpClient.PostAsJsonAsync to 'identity/refresh' (framework call omitted from calls list)\"}\n    unresolved_unresolved_1u6whi4_call_target{\"Unresolved: INativeStorageService.SaveSecureString\"}\n    unresolved_unresolved_1v3p4g4_call_target{\"Unresolved: GetProfileAsync\"}\n    unresolved_unresolved_1wraerh_call_target{\"Unresolved: NexusAuthenticationStateProvider.NotifyUserAuthentication\"}\n    unresolved_unresolved_7bj2q1_call_target{\"Unresolved: NexusAuthenticationStateProvider.ClearCache\"}\n    unresolved_unresolved_7cdvii_call_target{\"Unresolved: OnStateInvalidated.Invoke\"}\n    unresolved_unresolved_iwmd6s_call_target{\"Unresolved: GetProfileInternalAsync\"}\n    unresolved_unresolved_kf4wfl_call_target{\"Unresolved: INativeStorageService.SaveSecureString\"}\n    unresolved_unresolved_qhvr5q_call_target{\"Unresolved: GetProfileAsync\"}\n    unresolved_unresolved_r45bnc_call_target{\"Unresolved: INativeStorageService.SaveSecureString\"}\n    unresolved_unresolved_sdsrv_interaction_target{\"Unresolved: HttpClient.GetAsync('identity/profile') (framework call omitted from calls list)\"}\n    unresolved_unresolved_wkcuys_call_target{\"Unresolved: LogoutAsync\"}\n    unresolved_unresolved_wlkdyl_call_target{\"Unresolved: NexusAuthenticationStateProvider.ClearCache\"}\n    unresolved_unresolved_y9kokj_call_target{\"Unresolved: NexusAuthenticationStateProvider.ClearCache\"}\n    class_vgua1e_identityservice -->|contains| method_1i33wis_logoutasync\n    class_vgua1e_identityservice -->|contains| method_1u6514u_getprofileasync\n    class_vgua1e_identityservice -->|contains| method_8ggznb_identityservice\n    class_vgua1e_identityservice -->|contains| method_b6asoe_loginasync\n    class_vgua1e_identityservice -->|contains| method_kf6qfg_registerasync\n    class_vgua1e_identityservice -->|contains| method_nb75z9_refreshtokenasync\n    class_vgua1e_identityservice -->|contains| method_nyrl9z_getprofileinternalasync\n    class_vgua1e_identityservice -->|unresolved interaction| unresolved_unresolved_159kzo2_interaction_target\n    class_vgua1e_identityservice -->|unresolved interaction| unresolved_unresolved_1qta35c_interaction_target\n    class_vgua1e_identityservice -->|unresolved interaction| unresolved_unresolved_sdsrv_interaction_target\n    method_1i33wis_logoutasync -->|unresolved call| unresolved_unresolved_1h591k0_call_target\n    method_1i33wis_logoutasync -->|unresolved call| unresolved_unresolved_7cdvii_call_target\n    method_1i33wis_logoutasync -->|unresolved call| unresolved_unresolved_r45bnc_call_target\n    method_1i33wis_logoutasync -->|unresolved call| unresolved_unresolved_r45bnc_call_target\n    method_1i33wis_logoutasync -->|unresolved call| unresolved_unresolved_r45bnc_call_target\n    method_1i33wis_logoutasync -->|unresolved call| unresolved_unresolved_r45bnc_call_target\n    method_1i33wis_logoutasync -->|unresolved call| unresolved_unresolved_r45bnc_call_target\n    method_1i33wis_logoutasync -->|unresolved call| unresolved_unresolved_wlkdyl_call_target\n    method_1u6514u_getprofileasync -->|unresolved call| unresolved_unresolved_iwmd6s_call_target\n    method_b6asoe_loginasync -->|unresolved call| unresolved_unresolved_1atdq4u_call_target\n    method_b6asoe_loginasync -->|unresolved call| unresolved_unresolved_1e40o4e_call_target\n    method_b6asoe_loginasync -->|unresolved call| unresolved_unresolved_1u6whi4_call_target\n    method_b6asoe_loginasync -->|unresolved call| unresolved_unresolved_1u6whi4_call_target\n    method_b6asoe_loginasync -->|unresolved call| unresolved_unresolved_1u6whi4_call_target\n    method_b6asoe_loginasync -->|unresolved call| unresolved_unresolved_1u6whi4_call_target\n    method_b6asoe_loginasync -->|unresolved call| unresolved_unresolved_1u6whi4_call_target\n    method_b6asoe_loginasync -->|unresolved call| unresolved_unresolved_1v3p4g4_call_target\n    method_b6asoe_loginasync -->|unresolved call| unresolved_unresolved_7bj2q1_call_target\n    method_nb75z9_refreshtokenasync -->|unresolved call| unresolved_unresolved_10fc8rp_call_target\n    method_nb75z9_refreshtokenasync -->|unresolved call| unresolved_unresolved_19pszpm_call_target\n    method_nb75z9_refreshtokenasync -->|unresolved call| unresolved_unresolved_19pszpm_call_target\n    method_nb75z9_refreshtokenasync -->|unresolved call| unresolved_unresolved_19pszpm_call_target\n    method_nb75z9_refreshtokenasync -->|unresolved call| unresolved_unresolved_19pszpm_call_target\n    method_nb75z9_refreshtokenasync -->|unresolved call| unresolved_unresolved_19pszpm_call_target\n    method_nb75z9_refreshtokenasync -->|unresolved call| unresolved_unresolved_1gkugkk_call_target\n    method_nb75z9_refreshtokenasync -->|unresolved call| unresolved_unresolved_1gvn8f0_call_target\n    method_nb75z9_refreshtokenasync -->|unresolved call| unresolved_unresolved_qhvr5q_call_target\n    method_nb75z9_refreshtokenasync -->|unresolved call| unresolved_unresolved_y9kokj_call_target\n    method_nyrl9z_getprofileinternalasync -->|unresolved call| unresolved_unresolved_1wraerh_call_target\n    method_nyrl9z_getprofileinternalasync -->|unresolved call| unresolved_unresolved_kf4wfl_call_target\n    method_nyrl9z_getprofileinternalasync -->|unresolved call| unresolved_unresolved_kf4wfl_call_target\n    method_nyrl9z_getprofileinternalasync -->|unresolved call| unresolved_unresolved_kf4wfl_call_target\n    method_nyrl9z_getprofileinternalasync -->|unresolved call| unresolved_unresolved_wkcuys_call_target",
      "warnings": [
        "diagram file_b8uv8h_identityservice_cs_execution_view exceeds preferred complexity thresholds (30 nodes, 43 edges)."
      ]
    },
    {
      "id": "method_kf6qfg_registerasync__fragment_diagram",
      "purpose": "control-flow",
      "title": "RegisterAsync() Control Flow",
      "required": true,
      "diagram": {
        "id": "method_kf6qfg_registerasync__fragment_diagram",
        "kind": "control-flow",
        "title": "RegisterAsync() Control Flow",
        "direction": "TD",
        "nodes": [
          {
            "id": "method_kf6qfg_registerasync__entry",
            "kind": "step",
            "label": "RegisterAsync entry",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 33
          },
          {
            "id": "method_kf6qfg_registerasync__action_35_try_catch_35__linear",
            "kind": "step",
            "label": "Network exception handling",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 35
          },
          {
            "id": "method_kf6qfg_registerasync__action_35_registerasync_try_35_0__try",
            "kind": "step",
            "label": "Begins protected execution",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 35
          },
          {
            "id": "method_kf6qfg_registerasync__action_37_registerasync_await_37_1__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 37
          },
          {
            "id": "method_kf6qfg_registerasync__action_37_external_call_37__linear",
            "kind": "dependency",
            "label": "POST register",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 37
          },
          {
            "id": "method_kf6qfg_registerasync__action_38_registerasync_return_38_2__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "id": "method_kf6qfg_registerasync__action_38_branch_38__condition",
            "kind": "step",
            "label": "response.IsSuccessStatusCode",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "id": "method_kf6qfg_registerasync__action_38_branch_38__true",
            "kind": "step",
            "label": "ok",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "id": "method_kf6qfg_registerasync__action_38_branch_38__false",
            "kind": "step",
            "label": "fail",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "id": "method_kf6qfg_registerasync__action_38_branch_38__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "id": "method_kf6qfg_registerasync__action_40_registerasync_catch_40_3__catch",
            "kind": "step",
            "label": "catch Exception ex",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 40
          },
          {
            "id": "method_kf6qfg_registerasync__action_42_registerasync_return_42_4__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 42
          }
        ],
        "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 35
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 35
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 37
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 37
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "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",
            "semanticLabel": "ok",
            "visibleLabel": "ok",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "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",
            "semanticLabel": "fail",
            "visibleLabel": "fail",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 38
          },
          {
            "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",
            "semanticLabel": "exception",
            "visibleLabel": "exception",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 40
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 42
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.UI.Shared/Services/IdentityService.cs"
          ],
          "warnings": []
        },
        "subgraphs": []
      },
      "mermaidSource": "flowchart TD\n    method_kf6qfg_registerasync__action_35_registerasync_try_35_0__try(\"Begins protected execution\")\n    method_kf6qfg_registerasync__action_35_try_catch_35__linear(\"Network exception handling\")\n    method_kf6qfg_registerasync__action_37_registerasync_await_37_1__await[[\"Waits for async work\"]]\n    method_kf6qfg_registerasync__action_38_branch_38__condition{\"response.IsSuccessStatusCode\"}\n    method_kf6qfg_registerasync__action_38_branch_38__false(\"fail\")\n    method_kf6qfg_registerasync__action_38_branch_38__merge(\"merge\")\n    method_kf6qfg_registerasync__action_38_branch_38__true(\"ok\")\n    method_kf6qfg_registerasync__action_40_registerasync_catch_40_3__catch(\"catch Exception ex\")\n    method_kf6qfg_registerasync__entry([\"RegisterAsync entry\"])\n    method_kf6qfg_registerasync__action_37_external_call_37__linear(\"POST register\")\n    method_kf6qfg_registerasync__action_38_registerasync_return_38_2__return([\"Returns result\"])\n    method_kf6qfg_registerasync__action_42_registerasync_return_42_4__return([\"Returns result\"])\n    method_kf6qfg_registerasync__action_35_registerasync_try_35_0__try -->|next| method_kf6qfg_registerasync__action_37_registerasync_await_37_1__await\n    method_kf6qfg_registerasync__action_35_try_catch_35__linear -->|next| method_kf6qfg_registerasync__action_35_registerasync_try_35_0__try\n    method_kf6qfg_registerasync__action_37_external_call_37__linear -->|return| method_kf6qfg_registerasync__action_38_registerasync_return_38_2__return\n    method_kf6qfg_registerasync__action_37_registerasync_await_37_1__await -->|next| method_kf6qfg_registerasync__action_37_external_call_37__linear\n    method_kf6qfg_registerasync__action_38_branch_38__condition -->|fail| method_kf6qfg_registerasync__action_38_branch_38__false\n    method_kf6qfg_registerasync__action_38_branch_38__condition -->|ok| method_kf6qfg_registerasync__action_38_branch_38__true\n    method_kf6qfg_registerasync__action_38_branch_38__false -->|next| method_kf6qfg_registerasync__action_38_branch_38__merge\n    method_kf6qfg_registerasync__action_38_branch_38__merge -->|exception| method_kf6qfg_registerasync__action_40_registerasync_catch_40_3__catch\n    method_kf6qfg_registerasync__action_38_branch_38__true -->|next| method_kf6qfg_registerasync__action_38_branch_38__merge\n    method_kf6qfg_registerasync__action_38_registerasync_return_38_2__return -->|next| method_kf6qfg_registerasync__action_38_branch_38__condition\n    method_kf6qfg_registerasync__action_40_registerasync_catch_40_3__catch -->|return| method_kf6qfg_registerasync__action_42_registerasync_return_42_4__return\n    method_kf6qfg_registerasync__entry -->|next| method_kf6qfg_registerasync__action_35_try_catch_35__linear",
      "warnings": []
    },
    {
      "id": "method_b6asoe_loginasync__fragment_diagram",
      "purpose": "control-flow",
      "title": "LoginAsync() Control Flow",
      "required": true,
      "diagram": {
        "id": "method_b6asoe_loginasync__fragment_diagram",
        "kind": "control-flow",
        "title": "LoginAsync() Control Flow",
        "direction": "TD",
        "nodes": [
          {
            "id": "method_b6asoe_loginasync__entry",
            "kind": "step",
            "label": "LoginAsync entry",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 46
          },
          {
            "id": "method_b6asoe_loginasync__action_48_try_catch_48__linear",
            "kind": "step",
            "label": "Entire login flow guarded",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 48
          },
          {
            "id": "method_b6asoe_loginasync__action_48_loginasync_try_48_0__try",
            "kind": "step",
            "label": "Begins protected execution",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 48
          },
          {
            "id": "method_b6asoe_loginasync__action_50_loginasync_await_50_1__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 50
          },
          {
            "id": "method_b6asoe_loginasync__action_52_loginasync_branch_52_2__condition",
            "kind": "step",
            "label": "response.IsSuccessStatusCode",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_b6asoe_loginasync__action_52_loginasync_branch_52_2__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_b6asoe_loginasync__action_52_loginasync_branch_52_2__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_b6asoe_loginasync__action_52_loginasync_branch_52_2__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_b6asoe_loginasync__action_52_branch_52__condition",
            "kind": "step",
            "label": "response.IsSuccessStatusCode",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_b6asoe_loginasync__action_52_branch_52__true",
            "kind": "step",
            "label": "process tokens and profile",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_b6asoe_loginasync__action_52_branch_52__false",
            "kind": "step",
            "label": "return invalid credentials",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_b6asoe_loginasync__action_52_branch_52__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "id": "method_b6asoe_loginasync__action_56_try_catch_56__linear",
            "kind": "step",
            "label": "Parse JSON response",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 56
          },
          {
            "id": "method_b6asoe_loginasync__action_56_loginasync_try_56_3__try",
            "kind": "step",
            "label": "Begins protected execution",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 56
          },
          {
            "id": "method_b6asoe_loginasync__action_58_loginasync_await_58_4__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 58
          },
          {
            "id": "method_b6asoe_loginasync__action_60_loginasync_catch_60_5__catch",
            "kind": "step",
            "label": "catch System.Text.Json.JsonException ex",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 60
          },
          {
            "id": "method_b6asoe_loginasync__action_62_loginasync_return_62_6__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 62
          },
          {
            "id": "method_b6asoe_loginasync__action_65_guard_clause_65__condition",
            "kind": "step",
            "label": "result != null && !string.IsNullOrEmpty(result.AccessToken)",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "id": "method_b6asoe_loginasync__action_65_guard_clause_65__true",
            "kind": "step",
            "label": "save tokens",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "id": "method_b6asoe_loginasync__action_65_guard_clause_65__false",
            "kind": "step",
            "label": "skip token persistence",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "id": "method_b6asoe_loginasync__action_65_guard_clause_65__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "id": "method_b6asoe_loginasync__action_65_loginasync_branch_65_7__condition",
            "kind": "step",
            "label": "result != null && !string.IsNullOrEmpty(result.AccessToken)",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "id": "method_b6asoe_loginasync__action_65_loginasync_branch_65_7__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "id": "method_b6asoe_loginasync__action_65_loginasync_branch_65_7__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "id": "method_b6asoe_loginasync__action_65_loginasync_branch_65_7__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "id": "method_b6asoe_loginasync__action_67_loginasync_await_67_8__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 67
          },
          {
            "id": "method_b6asoe_loginasync__call_67_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 67
          },
          {
            "id": "method_b6asoe_loginasync__action_68_loginasync_branch_68_9__condition",
            "kind": "step",
            "label": "!string.IsNullOrEmpty(result.RefreshToken)",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 68
          },
          {
            "id": "method_b6asoe_loginasync__action_68_loginasync_branch_68_9__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 68
          },
          {
            "id": "method_b6asoe_loginasync__action_68_loginasync_branch_68_9__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 68
          },
          {
            "id": "method_b6asoe_loginasync__action_68_loginasync_branch_68_9__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 68
          },
          {
            "id": "method_b6asoe_loginasync__action_70_loginasync_await_70_10__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 70
          },
          {
            "id": "method_b6asoe_loginasync__call_70_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 70
          },
          {
            "id": "method_b6asoe_loginasync__action_74_state_change_74__linear",
            "kind": "step",
            "label": "Invalidate auth state and notify listeners",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 74
          },
          {
            "id": "method_b6asoe_loginasync__call_74_NexusAuthenticationStateProvider_ClearCache",
            "kind": "method",
            "label": "NexusAuthenticationStateProvider.ClearCache",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 74
          },
          {
            "id": "method_b6asoe_loginasync__action_75_loginasync_await_75_12__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "id": "method_b6asoe_loginasync__action_75_loginasync_branch_75_11__condition",
            "kind": "step",
            "label": "OnStateInvalidated != null) await OnStateInvalidated.Invoke(",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "id": "method_b6asoe_loginasync__action_75_loginasync_branch_75_11__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "id": "method_b6asoe_loginasync__action_75_loginasync_branch_75_11__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "id": "method_b6asoe_loginasync__action_75_loginasync_branch_75_11__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "id": "method_b6asoe_loginasync__call_75_OnStateInvalidated_Invoke",
            "kind": "method",
            "label": "OnStateInvalidated.Invoke",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "id": "method_b6asoe_loginasync__action_77_loginasync_await_77_13__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 77
          },
          {
            "id": "method_b6asoe_loginasync__action_77_orchestration_77__linear",
            "kind": "step",
            "label": "Fetch and persist profile after login",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 77
          },
          {
            "id": "method_b6asoe_loginasync__call_77_GetProfileAsync",
            "kind": "method",
            "label": "GetProfileAsync",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 77
          },
          {
            "id": "method_b6asoe_loginasync__action_78_loginasync_branch_78_14__condition",
            "kind": "step",
            "label": "profileResult.IsSuccess",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 78
          },
          {
            "id": "method_b6asoe_loginasync__action_78_loginasync_branch_78_14__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 78
          },
          {
            "id": "method_b6asoe_loginasync__action_78_loginasync_branch_78_14__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 78
          },
          {
            "id": "method_b6asoe_loginasync__action_78_loginasync_branch_78_14__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 78
          },
          {
            "id": "method_b6asoe_loginasync__action_81_loginasync_await_81_15__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 81
          },
          {
            "id": "method_b6asoe_loginasync__call_81_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 81
          },
          {
            "id": "method_b6asoe_loginasync__action_82_loginasync_await_82_16__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 82
          },
          {
            "id": "method_b6asoe_loginasync__call_82_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 82
          },
          {
            "id": "method_b6asoe_loginasync__action_85_loginasync_await_85_17__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 85
          },
          {
            "id": "method_b6asoe_loginasync__call_85_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 85
          },
          {
            "id": "method_b6asoe_loginasync__action_87_loginasync_notification_87_18__linear",
            "kind": "dependency",
            "label": "Sends notification",
            "shape": "doc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 87
          },
          {
            "id": "method_b6asoe_loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication",
            "kind": "method",
            "label": "NexusAuthenticationStateProvider.NotifyUserAuthentication",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 87
          },
          {
            "id": "method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__condition",
            "kind": "step",
            "label": "Falls back to alternate path",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 89
          },
          {
            "id": "method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__true",
            "kind": "step",
            "label": "fallback",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 89
          },
          {
            "id": "method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__false",
            "kind": "step",
            "label": "otherwise",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 89
          },
          {
            "id": "method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 89
          },
          {
            "id": "method_b6asoe_loginasync__action_91_loginasync_notification_91_20__linear",
            "kind": "dependency",
            "label": "Sends notification",
            "shape": "doc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 91
          },
          {
            "id": "method_b6asoe_loginasync__action_94_loginasync_return_94_21__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 94
          },
          {
            "id": "method_b6asoe_loginasync__action_94_return_94__return",
            "kind": "return",
            "label": "Return success/failure",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 94
          },
          {
            "id": "method_b6asoe_loginasync__action_96_loginasync_return_96_22__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 96
          },
          {
            "id": "method_b6asoe_loginasync__action_98_loginasync_catch_98_23__catch",
            "kind": "step",
            "label": "catch Exception ex",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 98
          },
          {
            "id": "method_b6asoe_loginasync__action_100_loginasync_return_100_24__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 100
          }
        ],
        "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 48
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 48
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 50
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "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",
            "semanticLabel": "process tokens and profile",
            "visibleLabel": "process tokens and profile",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "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",
            "semanticLabel": "return invalid credentials",
            "visibleLabel": "return invalid credentials",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 52
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 56
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 56
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 58
          },
          {
            "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",
            "semanticLabel": "exception",
            "visibleLabel": "exception",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 60
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 62
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "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",
            "semanticLabel": "save tokens",
            "visibleLabel": "save tokens",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "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",
            "semanticLabel": "skip token persistence",
            "visibleLabel": "skip token persistence",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 65
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 67
          },
          {
            "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",
            "semanticLabel": "TokenKey, result.AccessToken",
            "visibleLabel": "TokenKey, result.AccessToken",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 67
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 68
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 68
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 68
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 68
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 68
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 70
          },
          {
            "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",
            "semanticLabel": "RefreshTokenKey, result.RefreshToken",
            "visibleLabel": "RefreshTokenKey, result.RefreshToken",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 70
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 74
          },
          {
            "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",
            "semanticLabel": "cast _authStateProvider and call ClearCache",
            "visibleLabel": "cast _authStateProvider and call ClearCache",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 74
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "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",
            "semanticLabel": "invoke event if not null",
            "visibleLabel": "invoke event if not null",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 75
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 77
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 77
          },
          {
            "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",
            "semanticLabel": "no parameters",
            "visibleLabel": "no parameters",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 77
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 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",
            "semanticLabel": "StorageKeys.UserEmail, profile.Email",
            "visibleLabel": "StorageKeys.UserEmail, profile.Email",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 81
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 82
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserTenant, profile.TenantId.ToString()",
            "visibleLabel": "StorageKeys.UserTenant, profile.TenantId.ToString",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 82
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 85
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserRoles, rolesStr",
            "visibleLabel": "StorageKeys.UserRoles, rolesStr",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 85
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 87
          },
          {
            "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",
            "semanticLabel": "profile.Email, profile.TenantId.ToString(), rolesStr (or fallback email/unknown)",
            "visibleLabel": "profile.Email, profile.TenantId.ToString , rolesStr or fallback email / unknown",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 87
          },
          {
            "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",
            "semanticLabel": "fallback",
            "visibleLabel": "fallback",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 89
          },
          {
            "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",
            "semanticLabel": "fallback",
            "visibleLabel": "fallback",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 89
          },
          {
            "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",
            "semanticLabel": "otherwise",
            "visibleLabel": "otherwise",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 89
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 89
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 89
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 91
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 94
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 94
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 96
          },
          {
            "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",
            "semanticLabel": "exception",
            "visibleLabel": "exception",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 98
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 100
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.UI.Shared/Services/IdentityService.cs"
          ],
          "warnings": [
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target NexusAuthenticationStateProvider.ClearCache in unknown could not be matched to an extracted method symbol.",
            "Call target OnStateInvalidated.Invoke in NexusReader.UI.Shared/Services/IdentityService.cs could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target NexusAuthenticationStateProvider.NotifyUserAuthentication in unknown could not be matched to an extracted method symbol."
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "---\nconfig:\n  flowchart:\n    defaultRenderer: \"elk\"\n---\nflowchart TD\n    method_b6asoe_loginasync__call_67_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_b6asoe_loginasync__call_70_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_b6asoe_loginasync__call_74_NexusAuthenticationStateProvider_ClearCache[[\"NexusAuthenticationStateProvider.ClearCache\"]]\n    method_b6asoe_loginasync__call_75_OnStateInvalidated_Invoke[[\"OnStateInvalidated.Invoke\"]]\n    method_b6asoe_loginasync__call_77_GetProfileAsync[[\"GetProfileAsync\"]]\n    method_b6asoe_loginasync__call_81_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_b6asoe_loginasync__call_82_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_b6asoe_loginasync__call_85_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_b6asoe_loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication[[\"NexusAuthenticationStateProvider.NotifyUserAuthentication\"]]\n    method_b6asoe_loginasync__action_48_loginasync_try_48_0__try(\"Begins protected execution\")\n    method_b6asoe_loginasync__action_48_try_catch_48__linear(\"Entire login flow guarded\")\n    method_b6asoe_loginasync__action_50_loginasync_await_50_1__await[[\"Waits for async work\"]]\n    method_b6asoe_loginasync__action_52_branch_52__condition{\"response.IsSuccessStatusCode\"}\n    method_b6asoe_loginasync__action_52_branch_52__false(\"return invalid credentials\")\n    method_b6asoe_loginasync__action_52_branch_52__merge(\"merge\")\n    method_b6asoe_loginasync__action_52_branch_52__true(\"process tokens and profile\")\n    method_b6asoe_loginasync__action_52_loginasync_branch_52_2__condition{\"response.IsSuccessStatusCode\"}\n    method_b6asoe_loginasync__action_52_loginasync_branch_52_2__false(\"false\")\n    method_b6asoe_loginasync__action_52_loginasync_branch_52_2__merge(\"merge\")\n    method_b6asoe_loginasync__action_52_loginasync_branch_52_2__true(\"true\")\n    method_b6asoe_loginasync__action_56_loginasync_try_56_3__try(\"Begins protected execution\")\n    method_b6asoe_loginasync__action_56_try_catch_56__linear(\"Parse JSON response\")\n    method_b6asoe_loginasync__action_58_loginasync_await_58_4__await[[\"Waits for async work\"]]\n    method_b6asoe_loginasync__action_60_loginasync_catch_60_5__catch(\"catch System.Text.Json.JsonException ex\")\n    method_b6asoe_loginasync__action_65_guard_clause_65__condition{\"result != null && !string.IsNullOrEmpty(result.AccessToken)\"}\n    method_b6asoe_loginasync__action_65_guard_clause_65__false(\"skip token persistence\")\n    method_b6asoe_loginasync__action_65_guard_clause_65__merge(\"merge\")\n    method_b6asoe_loginasync__action_65_guard_clause_65__true(\"save tokens\")\n    method_b6asoe_loginasync__action_65_loginasync_branch_65_7__condition{\"result != null && !string.IsNullOrEmpty(result.AccessToken)\"}\n    method_b6asoe_loginasync__action_65_loginasync_branch_65_7__false(\"false\")\n    method_b6asoe_loginasync__action_65_loginasync_branch_65_7__merge(\"merge\")\n    method_b6asoe_loginasync__action_65_loginasync_branch_65_7__true(\"true\")\n    method_b6asoe_loginasync__action_67_loginasync_await_67_8__await[[\"Waits for async work\"]]\n    method_b6asoe_loginasync__action_68_loginasync_branch_68_9__condition{\"!string.IsNullOrEmpty(result.RefreshToken)\"}\n    method_b6asoe_loginasync__action_68_loginasync_branch_68_9__false(\"false\")\n    method_b6asoe_loginasync__action_68_loginasync_branch_68_9__merge(\"merge\")\n    method_b6asoe_loginasync__action_68_loginasync_branch_68_9__true(\"true\")\n    method_b6asoe_loginasync__action_70_loginasync_await_70_10__await[[\"Waits for async work\"]]\n    method_b6asoe_loginasync__action_74_state_change_74__linear(\"Invalidate auth state and notify listeners\")\n    method_b6asoe_loginasync__action_75_loginasync_await_75_12__await[[\"Waits for async work\"]]\n    method_b6asoe_loginasync__action_75_loginasync_branch_75_11__condition{\"OnStateInvalidated != null) await OnStateInvalidated.Invoke(\"}\n    method_b6asoe_loginasync__action_75_loginasync_branch_75_11__false(\"false\")\n    method_b6asoe_loginasync__action_75_loginasync_branch_75_11__merge(\"merge\")\n    method_b6asoe_loginasync__action_75_loginasync_branch_75_11__true(\"true\")\n    method_b6asoe_loginasync__action_77_loginasync_await_77_13__await[[\"Waits for async work\"]]\n    method_b6asoe_loginasync__action_77_orchestration_77__linear(\"Fetch and persist profile after login\")\n    method_b6asoe_loginasync__action_78_loginasync_branch_78_14__condition{\"profileResult.IsSuccess\"}\n    method_b6asoe_loginasync__action_78_loginasync_branch_78_14__false(\"false\")\n    method_b6asoe_loginasync__action_78_loginasync_branch_78_14__merge(\"merge\")\n    method_b6asoe_loginasync__action_78_loginasync_branch_78_14__true(\"true\")\n    method_b6asoe_loginasync__action_81_loginasync_await_81_15__await[[\"Waits for async work\"]]\n    method_b6asoe_loginasync__action_82_loginasync_await_82_16__await[[\"Waits for async work\"]]\n    method_b6asoe_loginasync__action_85_loginasync_await_85_17__await[[\"Waits for async work\"]]\n    method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__condition{\"Falls back to alternate path\"}\n    method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__false(\"otherwise\")\n    method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__merge(\"merge\")\n    method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__true(\"fallback\")\n    method_b6asoe_loginasync__action_98_loginasync_catch_98_23__catch(\"catch Exception ex\")\n    method_b6asoe_loginasync__entry([\"LoginAsync entry\"])\n    method_b6asoe_loginasync__action_87_loginasync_notification_87_18__linear[/\"Sends notification\"/]\n    method_b6asoe_loginasync__action_91_loginasync_notification_91_20__linear[/\"Sends notification\"/]\n    method_b6asoe_loginasync__action_100_loginasync_return_100_24__return([\"Returns result\"])\n    method_b6asoe_loginasync__action_62_loginasync_return_62_6__return([\"Returns result\"])\n    method_b6asoe_loginasync__action_94_loginasync_return_94_21__return([\"Returns result\"])\n    method_b6asoe_loginasync__action_94_return_94__return([\"Return success/failure\"])\n    method_b6asoe_loginasync__action_96_loginasync_return_96_22__return([\"Returns result\"])\n    method_b6asoe_loginasync__action_48_loginasync_try_48_0__try -->|next| method_b6asoe_loginasync__action_50_loginasync_await_50_1__await\n    method_b6asoe_loginasync__action_48_try_catch_48__linear -->|next| method_b6asoe_loginasync__action_48_loginasync_try_48_0__try\n    method_b6asoe_loginasync__action_50_loginasync_await_50_1__await -->|next| method_b6asoe_loginasync__action_52_loginasync_branch_52_2__condition\n    method_b6asoe_loginasync__action_52_branch_52__condition -->|return invalid credentials| method_b6asoe_loginasync__action_52_branch_52__false\n    method_b6asoe_loginasync__action_52_branch_52__condition -->|process tokens and profile| method_b6asoe_loginasync__action_52_branch_52__true\n    method_b6asoe_loginasync__action_52_branch_52__false -->|next| method_b6asoe_loginasync__action_52_branch_52__merge\n    method_b6asoe_loginasync__action_52_branch_52__merge -->|next| method_b6asoe_loginasync__action_56_try_catch_56__linear\n    method_b6asoe_loginasync__action_52_branch_52__true -->|next| method_b6asoe_loginasync__action_52_branch_52__merge\n    method_b6asoe_loginasync__action_52_loginasync_branch_52_2__condition -->|false| method_b6asoe_loginasync__action_52_loginasync_branch_52_2__false\n    method_b6asoe_loginasync__action_52_loginasync_branch_52_2__condition -->|true| method_b6asoe_loginasync__action_52_loginasync_branch_52_2__true\n    method_b6asoe_loginasync__action_52_loginasync_branch_52_2__false -->|next| method_b6asoe_loginasync__action_52_loginasync_branch_52_2__merge\n    method_b6asoe_loginasync__action_52_loginasync_branch_52_2__merge -->|next| method_b6asoe_loginasync__action_52_branch_52__condition\n    method_b6asoe_loginasync__action_52_loginasync_branch_52_2__true -->|next| method_b6asoe_loginasync__action_52_loginasync_branch_52_2__merge\n    method_b6asoe_loginasync__action_56_loginasync_try_56_3__try -->|next| method_b6asoe_loginasync__action_58_loginasync_await_58_4__await\n    method_b6asoe_loginasync__action_56_try_catch_56__linear -->|next| method_b6asoe_loginasync__action_56_loginasync_try_56_3__try\n    method_b6asoe_loginasync__action_58_loginasync_await_58_4__await -->|exception| method_b6asoe_loginasync__action_60_loginasync_catch_60_5__catch\n    method_b6asoe_loginasync__action_60_loginasync_catch_60_5__catch -->|return| method_b6asoe_loginasync__action_62_loginasync_return_62_6__return\n    method_b6asoe_loginasync__action_62_loginasync_return_62_6__return -->|next| method_b6asoe_loginasync__action_65_guard_clause_65__condition\n    method_b6asoe_loginasync__action_65_guard_clause_65__condition -->|skip token persistence| method_b6asoe_loginasync__action_65_guard_clause_65__false\n    method_b6asoe_loginasync__action_65_guard_clause_65__condition -->|save tokens| method_b6asoe_loginasync__action_65_guard_clause_65__true\n    method_b6asoe_loginasync__action_65_guard_clause_65__false -->|next| method_b6asoe_loginasync__action_65_guard_clause_65__merge\n    method_b6asoe_loginasync__action_65_guard_clause_65__merge -->|next| method_b6asoe_loginasync__action_65_loginasync_branch_65_7__condition\n    method_b6asoe_loginasync__action_65_guard_clause_65__true -->|next| method_b6asoe_loginasync__action_65_guard_clause_65__merge\n    method_b6asoe_loginasync__action_65_loginasync_branch_65_7__condition -->|false| method_b6asoe_loginasync__action_65_loginasync_branch_65_7__false\n    method_b6asoe_loginasync__action_65_loginasync_branch_65_7__condition -->|true| method_b6asoe_loginasync__action_65_loginasync_branch_65_7__true\n    method_b6asoe_loginasync__action_65_loginasync_branch_65_7__false -->|next| method_b6asoe_loginasync__action_65_loginasync_branch_65_7__merge\n    method_b6asoe_loginasync__action_65_loginasync_branch_65_7__merge -->|next| method_b6asoe_loginasync__action_67_loginasync_await_67_8__await\n    method_b6asoe_loginasync__action_65_loginasync_branch_65_7__true -->|next| method_b6asoe_loginasync__action_65_loginasync_branch_65_7__merge\n    method_b6asoe_loginasync__action_67_loginasync_await_67_8__await -->|TokenKey, result.AccessToken| method_b6asoe_loginasync__call_67_INativeStorageService_SaveSecureString\n    method_b6asoe_loginasync__action_68_loginasync_branch_68_9__condition -->|false| method_b6asoe_loginasync__action_68_loginasync_branch_68_9__false\n    method_b6asoe_loginasync__action_68_loginasync_branch_68_9__condition -->|true| method_b6asoe_loginasync__action_68_loginasync_branch_68_9__true\n    method_b6asoe_loginasync__action_68_loginasync_branch_68_9__false -->|next| method_b6asoe_loginasync__action_68_loginasync_branch_68_9__merge\n    method_b6asoe_loginasync__action_68_loginasync_branch_68_9__merge -->|next| method_b6asoe_loginasync__action_70_loginasync_await_70_10__await\n    method_b6asoe_loginasync__action_68_loginasync_branch_68_9__true -->|next| method_b6asoe_loginasync__action_68_loginasync_branch_68_9__merge\n    method_b6asoe_loginasync__action_70_loginasync_await_70_10__await -->|RefreshTokenKey, result.RefreshToken| method_b6asoe_loginasync__call_70_INativeStorageService_SaveSecureString\n    method_b6asoe_loginasync__action_74_state_change_74__linear -->|cast _authStateProvider and call ClearCache| method_b6asoe_loginasync__call_74_NexusAuthenticationStateProvider_ClearCache\n    method_b6asoe_loginasync__action_75_loginasync_await_75_12__await -->|next| method_b6asoe_loginasync__action_75_loginasync_branch_75_11__condition\n    method_b6asoe_loginasync__action_75_loginasync_branch_75_11__condition -->|false| method_b6asoe_loginasync__action_75_loginasync_branch_75_11__false\n    method_b6asoe_loginasync__action_75_loginasync_branch_75_11__condition -->|true| method_b6asoe_loginasync__action_75_loginasync_branch_75_11__true\n    method_b6asoe_loginasync__action_75_loginasync_branch_75_11__false -->|next| method_b6asoe_loginasync__action_75_loginasync_branch_75_11__merge\n    method_b6asoe_loginasync__action_75_loginasync_branch_75_11__merge -->|invoke event if not null| method_b6asoe_loginasync__call_75_OnStateInvalidated_Invoke\n    method_b6asoe_loginasync__action_75_loginasync_branch_75_11__true -->|next| method_b6asoe_loginasync__action_75_loginasync_branch_75_11__merge\n    method_b6asoe_loginasync__action_77_loginasync_await_77_13__await -->|next| method_b6asoe_loginasync__action_77_orchestration_77__linear\n    method_b6asoe_loginasync__action_77_orchestration_77__linear -->|no parameters| method_b6asoe_loginasync__call_77_GetProfileAsync\n    method_b6asoe_loginasync__action_78_loginasync_branch_78_14__condition -->|false| method_b6asoe_loginasync__action_78_loginasync_branch_78_14__false\n    method_b6asoe_loginasync__action_78_loginasync_branch_78_14__condition -->|true| method_b6asoe_loginasync__action_78_loginasync_branch_78_14__true\n    method_b6asoe_loginasync__action_78_loginasync_branch_78_14__false -->|next| method_b6asoe_loginasync__action_78_loginasync_branch_78_14__merge\n    method_b6asoe_loginasync__action_78_loginasync_branch_78_14__merge -->|next| method_b6asoe_loginasync__action_81_loginasync_await_81_15__await\n    method_b6asoe_loginasync__action_78_loginasync_branch_78_14__true -->|next| method_b6asoe_loginasync__action_78_loginasync_branch_78_14__merge\n    method_b6asoe_loginasync__action_81_loginasync_await_81_15__await -->|StorageKeys.UserEmail, profile.Email| method_b6asoe_loginasync__call_81_INativeStorageService_SaveSecureString\n    method_b6asoe_loginasync__action_82_loginasync_await_82_16__await -->|StorageKeys.UserTenant, profile.TenantId.ToString| method_b6asoe_loginasync__call_82_INativeStorageService_SaveSecureString\n    method_b6asoe_loginasync__action_85_loginasync_await_85_17__await -->|StorageKeys.UserRoles, rolesStr| method_b6asoe_loginasync__call_85_INativeStorageService_SaveSecureString\n    method_b6asoe_loginasync__action_87_loginasync_notification_87_18__linear -->|profile.Email, profile.TenantId.ToString , rolesStr or fallback email / unknown| method_b6asoe_loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication\n    method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__condition -->|otherwise| method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__false\n    method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__condition -->|fallback| method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__true\n    method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__false -->|next| method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__merge\n    method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__merge -->|next| method_b6asoe_loginasync__action_91_loginasync_notification_91_20__linear\n    method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__true -->|next| method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__merge\n    method_b6asoe_loginasync__action_91_loginasync_notification_91_20__linear -->|return| method_b6asoe_loginasync__action_94_loginasync_return_94_21__return\n    method_b6asoe_loginasync__action_94_loginasync_return_94_21__return -->|return| method_b6asoe_loginasync__action_94_return_94__return\n    method_b6asoe_loginasync__action_94_return_94__return -->|return| method_b6asoe_loginasync__action_96_loginasync_return_96_22__return\n    method_b6asoe_loginasync__action_96_loginasync_return_96_22__return -->|exception| method_b6asoe_loginasync__action_98_loginasync_catch_98_23__catch\n    method_b6asoe_loginasync__action_98_loginasync_catch_98_23__catch -->|return| method_b6asoe_loginasync__action_100_loginasync_return_100_24__return\n    method_b6asoe_loginasync__call_67_INativeStorageService_SaveSecureString -->|next| method_b6asoe_loginasync__action_68_loginasync_branch_68_9__condition\n    method_b6asoe_loginasync__call_70_INativeStorageService_SaveSecureString -->|next| method_b6asoe_loginasync__action_74_state_change_74__linear\n    method_b6asoe_loginasync__call_74_NexusAuthenticationStateProvider_ClearCache -->|next| method_b6asoe_loginasync__action_75_loginasync_await_75_12__await\n    method_b6asoe_loginasync__call_75_OnStateInvalidated_Invoke -->|next| method_b6asoe_loginasync__action_77_loginasync_await_77_13__await\n    method_b6asoe_loginasync__call_77_GetProfileAsync -->|next| method_b6asoe_loginasync__action_78_loginasync_branch_78_14__condition\n    method_b6asoe_loginasync__call_81_INativeStorageService_SaveSecureString -->|next| method_b6asoe_loginasync__action_82_loginasync_await_82_16__await\n    method_b6asoe_loginasync__call_82_INativeStorageService_SaveSecureString -->|next| method_b6asoe_loginasync__action_85_loginasync_await_85_17__await\n    method_b6asoe_loginasync__call_85_INativeStorageService_SaveSecureString -->|next| method_b6asoe_loginasync__action_87_loginasync_notification_87_18__linear\n    method_b6asoe_loginasync__call_87_NexusAuthenticationStateProvider_NotifyUserAuthentication -->|fallback| method_b6asoe_loginasync__action_89_loginasync_fallback_89_19__condition\n    method_b6asoe_loginasync__entry -->|next| method_b6asoe_loginasync__action_48_try_catch_48__linear",
      "warnings": [
        "diagram method_b6asoe_loginasync__fragment_diagram exceeds preferred complexity thresholds (66 nodes, 73 edges)."
      ]
    },
    {
      "id": "method_1i33wis_logoutasync__fragment_diagram",
      "purpose": "control-flow",
      "title": "LogoutAsync() Control Flow",
      "required": true,
      "diagram": {
        "id": "method_1i33wis_logoutasync__fragment_diagram",
        "kind": "control-flow",
        "title": "LogoutAsync() Control Flow",
        "direction": "TD",
        "nodes": [
          {
            "id": "method_1i33wis_logoutasync__entry",
            "kind": "step",
            "label": "LogoutAsync entry",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 104
          },
          {
            "id": "method_1i33wis_logoutasync__action_106_try_catch_106__linear",
            "kind": "step",
            "label": "Logout guarded",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 106
          },
          {
            "id": "method_1i33wis_logoutasync__action_106_logoutasync_try_106_0__try",
            "kind": "step",
            "label": "Begins protected execution",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 106
          },
          {
            "id": "method_1i33wis_logoutasync__action_108_state_change_108__linear",
            "kind": "step",
            "label": "Clear cached profile and storage keys",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 108
          },
          {
            "id": "method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__condition",
            "kind": "step",
            "label": "System.OperatingSystem.IsBrowser()",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 109
          },
          {
            "id": "method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 109
          },
          {
            "id": "method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 109
          },
          {
            "id": "method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 109
          },
          {
            "id": "method_1i33wis_logoutasync__action_111_logoutasync_await_111_2__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 111
          },
          {
            "id": "method_1i33wis_logoutasync__call_111_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 111
          },
          {
            "id": "method_1i33wis_logoutasync__action_112_logoutasync_await_112_3__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 112
          },
          {
            "id": "method_1i33wis_logoutasync__call_112_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 112
          },
          {
            "id": "method_1i33wis_logoutasync__action_113_logoutasync_await_113_4__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 113
          },
          {
            "id": "method_1i33wis_logoutasync__call_113_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 113
          },
          {
            "id": "method_1i33wis_logoutasync__action_114_logoutasync_await_114_5__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 114
          },
          {
            "id": "method_1i33wis_logoutasync__call_114_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 114
          },
          {
            "id": "method_1i33wis_logoutasync__action_115_logoutasync_await_115_6__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 115
          },
          {
            "id": "method_1i33wis_logoutasync__call_115_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 115
          },
          {
            "id": "method_1i33wis_logoutasync__action_118_logoutasync_await_118_8__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "id": "method_1i33wis_logoutasync__action_118_notify_118__linear",
            "kind": "step",
            "label": "Notify auth provider and listeners",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "id": "method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__condition",
            "kind": "step",
            "label": "OnStateInvalidated != null) await OnStateInvalidated.Invoke(",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "id": "method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "id": "method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "id": "method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "id": "method_1i33wis_logoutasync__call_118_OnStateInvalidated_Invoke",
            "kind": "method",
            "label": "OnStateInvalidated.Invoke",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "id": "method_1i33wis_logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache",
            "kind": "method",
            "label": "NexusAuthenticationStateProvider.ClearCache",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 119
          },
          {
            "id": "method_1i33wis_logoutasync__action_120_logoutasync_notification_120_9__linear",
            "kind": "dependency",
            "label": "Sends notification",
            "shape": "doc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 120
          },
          {
            "id": "method_1i33wis_logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout",
            "kind": "method",
            "label": "NexusAuthenticationStateProvider.NotifyUserLogout",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 120
          },
          {
            "id": "method_1i33wis_logoutasync__action_122_logoutasync_return_122_10__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 122
          },
          {
            "id": "method_1i33wis_logoutasync__action_122_return_122__return",
            "kind": "return",
            "label": "Return success",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 122
          },
          {
            "id": "method_1i33wis_logoutasync__action_124_logoutasync_catch_124_11__catch",
            "kind": "step",
            "label": "catch Exception ex",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 124
          },
          {
            "id": "method_1i33wis_logoutasync__action_126_logoutasync_return_126_12__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 126
          }
        ],
        "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 106
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 106
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 108
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 109
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 109
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 109
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 109
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 109
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 111
          },
          {
            "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",
            "semanticLabel": "TokenKey, empty string",
            "visibleLabel": "TokenKey, empty string",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 111
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 112
          },
          {
            "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",
            "semanticLabel": "RefreshTokenKey, empty string",
            "visibleLabel": "RefreshTokenKey, empty string",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 112
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 113
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserEmail, empty string",
            "visibleLabel": "StorageKeys.UserEmail, empty string",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 113
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 114
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserTenant, empty string",
            "visibleLabel": "StorageKeys.UserTenant, empty string",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 114
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 115
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserRoles, empty string",
            "visibleLabel": "StorageKeys.UserRoles, empty string",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 115
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "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",
            "semanticLabel": "invoke event if not null",
            "visibleLabel": "invoke event if not null",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 118
          },
          {
            "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",
            "semanticLabel": "cast _authStateProvider and call ClearCache",
            "visibleLabel": "cast _authStateProvider and call ClearCache",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 119
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 120
          },
          {
            "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",
            "semanticLabel": "cast _authStateProvider and call NotifyUserLogout",
            "visibleLabel": "cast _authStateProvider and call NotifyUserLogout",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 120
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 122
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 122
          },
          {
            "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",
            "semanticLabel": "exception",
            "visibleLabel": "exception",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 124
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 126
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.UI.Shared/Services/IdentityService.cs"
          ],
          "warnings": [
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target OnStateInvalidated.Invoke in NexusReader.UI.Shared/Services/IdentityService.cs could not be matched to an extracted method symbol.",
            "Call target NexusAuthenticationStateProvider.ClearCache in unknown could not be matched to an extracted method symbol.",
            "Call target NexusAuthenticationStateProvider.NotifyUserLogout in unknown could not be matched to an extracted method symbol."
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "---\nconfig:\n  flowchart:\n    defaultRenderer: \"elk\"\n---\nflowchart TD\n    method_1i33wis_logoutasync__call_111_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_1i33wis_logoutasync__call_112_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_1i33wis_logoutasync__call_113_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_1i33wis_logoutasync__call_114_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_1i33wis_logoutasync__call_115_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_1i33wis_logoutasync__call_118_OnStateInvalidated_Invoke[[\"OnStateInvalidated.Invoke\"]]\n    method_1i33wis_logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache[[\"NexusAuthenticationStateProvider.ClearCache\"]]\n    method_1i33wis_logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout[[\"NexusAuthenticationStateProvider.NotifyUserLogout\"]]\n    method_1i33wis_logoutasync__action_106_logoutasync_try_106_0__try(\"Begins protected execution\")\n    method_1i33wis_logoutasync__action_106_try_catch_106__linear(\"Logout guarded\")\n    method_1i33wis_logoutasync__action_108_state_change_108__linear(\"Clear cached profile and storage keys\")\n    method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__condition{\"System.OperatingSystem.IsBrowser()\"}\n    method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__false(\"false\")\n    method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__merge(\"merge\")\n    method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__true(\"true\")\n    method_1i33wis_logoutasync__action_111_logoutasync_await_111_2__await[[\"Waits for async work\"]]\n    method_1i33wis_logoutasync__action_112_logoutasync_await_112_3__await[[\"Waits for async work\"]]\n    method_1i33wis_logoutasync__action_113_logoutasync_await_113_4__await[[\"Waits for async work\"]]\n    method_1i33wis_logoutasync__action_114_logoutasync_await_114_5__await[[\"Waits for async work\"]]\n    method_1i33wis_logoutasync__action_115_logoutasync_await_115_6__await[[\"Waits for async work\"]]\n    method_1i33wis_logoutasync__action_118_logoutasync_await_118_8__await[[\"Waits for async work\"]]\n    method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__condition{\"OnStateInvalidated != null) await OnStateInvalidated.Invoke(\"}\n    method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__false(\"false\")\n    method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__merge(\"merge\")\n    method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__true(\"true\")\n    method_1i33wis_logoutasync__action_118_notify_118__linear(\"Notify auth provider and listeners\")\n    method_1i33wis_logoutasync__action_124_logoutasync_catch_124_11__catch(\"catch Exception ex\")\n    method_1i33wis_logoutasync__entry([\"LogoutAsync entry\"])\n    method_1i33wis_logoutasync__action_120_logoutasync_notification_120_9__linear[/\"Sends notification\"/]\n    method_1i33wis_logoutasync__action_122_logoutasync_return_122_10__return([\"Returns result\"])\n    method_1i33wis_logoutasync__action_122_return_122__return([\"Return success\"])\n    method_1i33wis_logoutasync__action_126_logoutasync_return_126_12__return([\"Returns result\"])\n    method_1i33wis_logoutasync__action_106_logoutasync_try_106_0__try -->|next| method_1i33wis_logoutasync__action_108_state_change_108__linear\n    method_1i33wis_logoutasync__action_106_try_catch_106__linear -->|next| method_1i33wis_logoutasync__action_106_logoutasync_try_106_0__try\n    method_1i33wis_logoutasync__action_108_state_change_108__linear -->|next| method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__condition\n    method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__condition -->|false| method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__false\n    method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__condition -->|true| method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__true\n    method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__false -->|next| method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__merge\n    method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__merge -->|next| method_1i33wis_logoutasync__action_111_logoutasync_await_111_2__await\n    method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__true -->|next| method_1i33wis_logoutasync__action_109_logoutasync_branch_109_1__merge\n    method_1i33wis_logoutasync__action_111_logoutasync_await_111_2__await -->|TokenKey, empty string| method_1i33wis_logoutasync__call_111_INativeStorageService_SaveSecureString\n    method_1i33wis_logoutasync__action_112_logoutasync_await_112_3__await -->|RefreshTokenKey, empty string| method_1i33wis_logoutasync__call_112_INativeStorageService_SaveSecureString\n    method_1i33wis_logoutasync__action_113_logoutasync_await_113_4__await -->|StorageKeys.UserEmail, empty string| method_1i33wis_logoutasync__call_113_INativeStorageService_SaveSecureString\n    method_1i33wis_logoutasync__action_114_logoutasync_await_114_5__await -->|StorageKeys.UserTenant, empty string| method_1i33wis_logoutasync__call_114_INativeStorageService_SaveSecureString\n    method_1i33wis_logoutasync__action_115_logoutasync_await_115_6__await -->|StorageKeys.UserRoles, empty string| method_1i33wis_logoutasync__call_115_INativeStorageService_SaveSecureString\n    method_1i33wis_logoutasync__action_118_logoutasync_await_118_8__await -->|next| method_1i33wis_logoutasync__action_118_notify_118__linear\n    method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__condition -->|false| method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__false\n    method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__condition -->|true| method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__true\n    method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__false -->|next| method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__merge\n    method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__merge -->|invoke event if not null| method_1i33wis_logoutasync__call_118_OnStateInvalidated_Invoke\n    method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__true -->|next| method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__merge\n    method_1i33wis_logoutasync__action_118_notify_118__linear -->|next| method_1i33wis_logoutasync__action_118_logoutasync_branch_118_7__condition\n    method_1i33wis_logoutasync__action_120_logoutasync_notification_120_9__linear -->|cast _authStateProvider and call NotifyUserLogout| method_1i33wis_logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout\n    method_1i33wis_logoutasync__action_122_logoutasync_return_122_10__return -->|return| method_1i33wis_logoutasync__action_122_return_122__return\n    method_1i33wis_logoutasync__action_122_return_122__return -->|exception| method_1i33wis_logoutasync__action_124_logoutasync_catch_124_11__catch\n    method_1i33wis_logoutasync__action_124_logoutasync_catch_124_11__catch -->|return| method_1i33wis_logoutasync__action_126_logoutasync_return_126_12__return\n    method_1i33wis_logoutasync__call_111_INativeStorageService_SaveSecureString -->|next| method_1i33wis_logoutasync__action_112_logoutasync_await_112_3__await\n    method_1i33wis_logoutasync__call_112_INativeStorageService_SaveSecureString -->|next| method_1i33wis_logoutasync__action_113_logoutasync_await_113_4__await\n    method_1i33wis_logoutasync__call_113_INativeStorageService_SaveSecureString -->|next| method_1i33wis_logoutasync__action_114_logoutasync_await_114_5__await\n    method_1i33wis_logoutasync__call_114_INativeStorageService_SaveSecureString -->|next| method_1i33wis_logoutasync__action_115_logoutasync_await_115_6__await\n    method_1i33wis_logoutasync__call_115_INativeStorageService_SaveSecureString -->|next| method_1i33wis_logoutasync__action_118_logoutasync_await_118_8__await\n    method_1i33wis_logoutasync__call_118_OnStateInvalidated_Invoke -->|cast _authStateProvider and call ClearCache| method_1i33wis_logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache\n    method_1i33wis_logoutasync__call_119_NexusAuthenticationStateProvider_ClearCache -->|next| method_1i33wis_logoutasync__action_120_logoutasync_notification_120_9__linear\n    method_1i33wis_logoutasync__call_120_NexusAuthenticationStateProvider_NotifyUserLogout -->|return| method_1i33wis_logoutasync__action_122_logoutasync_return_122_10__return\n    method_1i33wis_logoutasync__entry -->|next| method_1i33wis_logoutasync__action_106_try_catch_106__linear",
      "warnings": [
        "diagram method_1i33wis_logoutasync__fragment_diagram exceeds preferred complexity thresholds (32 nodes, 33 edges)."
      ]
    },
    {
      "id": "method_1u6514u_getprofileasync__fragment_diagram",
      "purpose": "control-flow",
      "title": "GetProfileAsync() Control Flow",
      "required": true,
      "diagram": {
        "id": "method_1u6514u_getprofileasync__fragment_diagram",
        "kind": "control-flow",
        "title": "GetProfileAsync() Control Flow",
        "direction": "TD",
        "nodes": [
          {
            "id": "method_1u6514u_getprofileasync__entry",
            "kind": "step",
            "label": "GetProfileAsync entry",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 130
          },
          {
            "id": "method_1u6514u_getprofileasync__action_132_guard_clause_132__condition",
            "kind": "step",
            "label": "_cachedProfile != null",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "id": "method_1u6514u_getprofileasync__action_132_guard_clause_132__true",
            "kind": "step",
            "label": "return cached",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "id": "method_1u6514u_getprofileasync__action_132_guard_clause_132__false",
            "kind": "step",
            "label": "continue",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "id": "method_1u6514u_getprofileasync__action_132_guard_clause_132__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "id": "method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__condition",
            "kind": "step",
            "label": "_cachedProfile != null",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "id": "method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "id": "method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "id": "method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "id": "method_1u6514u_getprofileasync__action_134_getprofileasync_return_134_1__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 134
          },
          {
            "id": "method_1u6514u_getprofileasync__action_137_guard_clause_137__condition",
            "kind": "step",
            "label": "_profileTask != null",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "id": "method_1u6514u_getprofileasync__action_137_guard_clause_137__true",
            "kind": "step",
            "label": "await existing task",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "id": "method_1u6514u_getprofileasync__action_137_guard_clause_137__false",
            "kind": "step",
            "label": "start new fetch",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "id": "method_1u6514u_getprofileasync__action_137_guard_clause_137__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "id": "method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__condition",
            "kind": "step",
            "label": "_profileTask != null",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "id": "method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "id": "method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "id": "method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "id": "method_1u6514u_getprofileasync__action_139_getprofileasync_await_139_3__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 139
          },
          {
            "id": "method_1u6514u_getprofileasync__action_140_getprofileasync_return_140_4__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 140
          },
          {
            "id": "method_1u6514u_getprofileasync__action_143_orchestration_143__linear",
            "kind": "step",
            "label": "Start internal profile fetch",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 143
          },
          {
            "id": "method_1u6514u_getprofileasync__call_143_GetProfileInternalAsync",
            "kind": "method",
            "label": "GetProfileInternalAsync",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 143
          },
          {
            "id": "method_1u6514u_getprofileasync__action_144_getprofileasync_await_144_5__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 144
          },
          {
            "id": "method_1u6514u_getprofileasync__action_145_getprofileasync_return_145_6__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 145
          }
        ],
        "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "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",
            "semanticLabel": "return cached",
            "visibleLabel": "return cached",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "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",
            "semanticLabel": "continue",
            "visibleLabel": "continue",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 132
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 134
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "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",
            "semanticLabel": "await existing task",
            "visibleLabel": "await existing task",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "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",
            "semanticLabel": "start new fetch",
            "visibleLabel": "start new fetch",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 137
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 139
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 140
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 143
          },
          {
            "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",
            "semanticLabel": "no parameters (starts internal fetch task)",
            "visibleLabel": "no parameters starts internal fetch task",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 143
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 144
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 145
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.UI.Shared/Services/IdentityService.cs"
          ],
          "warnings": []
        },
        "subgraphs": []
      },
      "mermaidSource": "---\nconfig:\n  flowchart:\n    defaultRenderer: \"elk\"\n---\nflowchart TD\n    method_1u6514u_getprofileasync__call_143_GetProfileInternalAsync[[\"GetProfileInternalAsync\"]]\n    method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__condition{\"_cachedProfile != null\"}\n    method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__false(\"false\")\n    method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__merge(\"merge\")\n    method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__true(\"true\")\n    method_1u6514u_getprofileasync__action_132_guard_clause_132__condition{\"_cachedProfile != null\"}\n    method_1u6514u_getprofileasync__action_132_guard_clause_132__false(\"continue\")\n    method_1u6514u_getprofileasync__action_132_guard_clause_132__merge(\"merge\")\n    method_1u6514u_getprofileasync__action_132_guard_clause_132__true(\"return cached\")\n    method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__condition{\"_profileTask != null\"}\n    method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__false(\"false\")\n    method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__merge(\"merge\")\n    method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__true(\"true\")\n    method_1u6514u_getprofileasync__action_137_guard_clause_137__condition{\"_profileTask != null\"}\n    method_1u6514u_getprofileasync__action_137_guard_clause_137__false(\"start new fetch\")\n    method_1u6514u_getprofileasync__action_137_guard_clause_137__merge(\"merge\")\n    method_1u6514u_getprofileasync__action_137_guard_clause_137__true(\"await existing task\")\n    method_1u6514u_getprofileasync__action_139_getprofileasync_await_139_3__await[[\"Waits for async work\"]]\n    method_1u6514u_getprofileasync__action_143_orchestration_143__linear(\"Start internal profile fetch\")\n    method_1u6514u_getprofileasync__action_144_getprofileasync_await_144_5__await[[\"Waits for async work\"]]\n    method_1u6514u_getprofileasync__entry([\"GetProfileAsync entry\"])\n    method_1u6514u_getprofileasync__action_134_getprofileasync_return_134_1__return([\"Returns result\"])\n    method_1u6514u_getprofileasync__action_140_getprofileasync_return_140_4__return([\"Returns result\"])\n    method_1u6514u_getprofileasync__action_145_getprofileasync_return_145_6__return([\"Returns result\"])\n    method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__condition -->|false| method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__false\n    method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__condition -->|true| method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__true\n    method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__false -->|next| method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__merge\n    method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__merge -->|return| method_1u6514u_getprofileasync__action_134_getprofileasync_return_134_1__return\n    method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__true -->|next| method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__merge\n    method_1u6514u_getprofileasync__action_132_guard_clause_132__condition -->|continue| method_1u6514u_getprofileasync__action_132_guard_clause_132__false\n    method_1u6514u_getprofileasync__action_132_guard_clause_132__condition -->|return cached| method_1u6514u_getprofileasync__action_132_guard_clause_132__true\n    method_1u6514u_getprofileasync__action_132_guard_clause_132__false -->|next| method_1u6514u_getprofileasync__action_132_guard_clause_132__merge\n    method_1u6514u_getprofileasync__action_132_guard_clause_132__merge -->|next| method_1u6514u_getprofileasync__action_132_getprofileasync_branch_132_0__condition\n    method_1u6514u_getprofileasync__action_132_guard_clause_132__true -->|next| method_1u6514u_getprofileasync__action_132_guard_clause_132__merge\n    method_1u6514u_getprofileasync__action_134_getprofileasync_return_134_1__return -->|next| method_1u6514u_getprofileasync__action_137_guard_clause_137__condition\n    method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__condition -->|false| method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__false\n    method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__condition -->|true| method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__true\n    method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__false -->|next| method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__merge\n    method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__merge -->|next| method_1u6514u_getprofileasync__action_139_getprofileasync_await_139_3__await\n    method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__true -->|next| method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__merge\n    method_1u6514u_getprofileasync__action_137_guard_clause_137__condition -->|start new fetch| method_1u6514u_getprofileasync__action_137_guard_clause_137__false\n    method_1u6514u_getprofileasync__action_137_guard_clause_137__condition -->|await existing task| method_1u6514u_getprofileasync__action_137_guard_clause_137__true\n    method_1u6514u_getprofileasync__action_137_guard_clause_137__false -->|next| method_1u6514u_getprofileasync__action_137_guard_clause_137__merge\n    method_1u6514u_getprofileasync__action_137_guard_clause_137__merge -->|next| method_1u6514u_getprofileasync__action_137_getprofileasync_branch_137_2__condition\n    method_1u6514u_getprofileasync__action_137_guard_clause_137__true -->|next| method_1u6514u_getprofileasync__action_137_guard_clause_137__merge\n    method_1u6514u_getprofileasync__action_139_getprofileasync_await_139_3__await -->|return| method_1u6514u_getprofileasync__action_140_getprofileasync_return_140_4__return\n    method_1u6514u_getprofileasync__action_140_getprofileasync_return_140_4__return -->|next| method_1u6514u_getprofileasync__action_143_orchestration_143__linear\n    method_1u6514u_getprofileasync__action_143_orchestration_143__linear -->|no parameters starts internal fetch task| method_1u6514u_getprofileasync__call_143_GetProfileInternalAsync\n    method_1u6514u_getprofileasync__action_144_getprofileasync_await_144_5__await -->|return| method_1u6514u_getprofileasync__action_145_getprofileasync_return_145_6__return\n    method_1u6514u_getprofileasync__call_143_GetProfileInternalAsync -->|next| method_1u6514u_getprofileasync__action_144_getprofileasync_await_144_5__await\n    method_1u6514u_getprofileasync__entry -->|next| method_1u6514u_getprofileasync__action_132_guard_clause_132__condition",
      "warnings": [
        "diagram method_1u6514u_getprofileasync__fragment_diagram exceeds preferred complexity thresholds (24 nodes, 27 edges)."
      ]
    },
    {
      "id": "method_nyrl9z_getprofileinternalasync__fragment_diagram",
      "purpose": "control-flow",
      "title": "GetProfileInternalAsync() Control Flow",
      "required": true,
      "diagram": {
        "id": "method_nyrl9z_getprofileinternalasync__fragment_diagram",
        "kind": "control-flow",
        "title": "GetProfileInternalAsync() Control Flow",
        "direction": "TD",
        "nodes": [
          {
            "id": "method_nyrl9z_getprofileinternalasync__entry",
            "kind": "step",
            "label": "GetProfileInternalAsync entry",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 150
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__condition",
            "kind": "step",
            "label": "System.OperatingSystem.IsBrowser()",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__true",
            "kind": "step",
            "label": "return null",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__false",
            "kind": "step",
            "label": "continue",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition",
            "kind": "step",
            "label": "!System.OperatingSystem.IsBrowser()",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_154_getprofileinternalasync_return_154_1__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 154
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_157_rate_limit_157__linear",
            "kind": "step",
            "label": "Throttle repeated fetches",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition",
            "kind": "step",
            "label": "DateTime.UtcNow - _lastFetchAttempt < TimeSpan.FromSeconds(5)",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_159_getprofileinternalasync_return_159_3__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 159
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_162_state_change_162__linear",
            "kind": "step",
            "label": "Update last fetch timestamp",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 162
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_163_getprofileinternalasync_try_163_4__try",
            "kind": "step",
            "label": "Begins protected execution",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 163
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_165_getprofileinternalasync_await_165_5__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 165
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_165_external_call_165__linear",
            "kind": "dependency",
            "label": "GET profile",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 165
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_167_branch_167__condition",
            "kind": "step",
            "label": "response.StatusCode == Unauthorized",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_167_branch_167__true",
            "kind": "step",
            "label": "logout and return null",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_167_branch_167__false",
            "kind": "step",
            "label": "continue",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_167_branch_167__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition",
            "kind": "step",
            "label": "response.StatusCode == System.Net.HttpStatusCode.Unauthorized",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_169_getprofileinternalasync_await_169_7__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 169
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__call_169_LogoutAsync",
            "kind": "method",
            "label": "LogoutAsync",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 169
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_170_getprofileinternalasync_return_170_8__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 170
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_173_branch_173__condition",
            "kind": "step",
            "label": "response.IsSuccessStatusCode",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_173_branch_173__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_173_branch_173__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_173_branch_173__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition",
            "kind": "step",
            "label": "response.IsSuccessStatusCode",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_175_getprofileinternalasync_await_175_10__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 175
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition",
            "kind": "step",
            "label": "profile != null",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 176
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 176
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 176
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 176
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_179_getprofileinternalasync_await_179_12__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 179
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__call_179_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 179
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_180_getprofileinternalasync_await_180_13__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 180
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__call_180_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 180
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_183_getprofileinternalasync_await_183_14__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 183
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__call_183_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 183
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_185_getprofileinternalasync_notification_185_15__linear",
            "kind": "dependency",
            "label": "Sends notification",
            "shape": "doc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 185
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication",
            "kind": "method",
            "label": "NexusAuthenticationStateProvider.NotifyUserAuthentication",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 185
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_187_getprofileinternalasync_return_187_16__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 187
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_190_getprofileinternalasync_return_190_17__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 190
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_192_try_catch_192__linear",
            "kind": "step",
            "label": "Swallow fetch/parsing errors",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 192
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_192_getprofileinternalasync_catch_192_18__catch",
            "kind": "step",
            "label": "Handles exception path",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 192
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_194_getprofileinternalasync_return_194_19__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 194
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_196_getprofileinternalasync_finally_196_20__finally",
            "kind": "step",
            "label": "Runs cleanup or finalization",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 196
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__action_198_finally_198__finally",
            "kind": "step",
            "label": "Reset in-flight task marker",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 198
          },
          {
            "id": "method_nyrl9z_getprofileinternalasync__implicit_return",
            "kind": "return",
            "label": "return",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 200
          }
        ],
        "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "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",
            "semanticLabel": "return null",
            "visibleLabel": "return null",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "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",
            "semanticLabel": "continue",
            "visibleLabel": "continue",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 152
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 154
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 157
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 159
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 162
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 163
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 165
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 165
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "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",
            "semanticLabel": "logout and return null",
            "visibleLabel": "logout and return null",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "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",
            "semanticLabel": "continue",
            "visibleLabel": "continue",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 167
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 169
          },
          {
            "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",
            "semanticLabel": "no parameters (called on 401)",
            "visibleLabel": "no parameters called on 401",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 169
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 170
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 173
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 175
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 176
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 176
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 176
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 176
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 176
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 179
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserEmail, profile.Email",
            "visibleLabel": "StorageKeys.UserEmail, profile.Email",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 179
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 180
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserTenant, profile.TenantId.ToString()",
            "visibleLabel": "StorageKeys.UserTenant, profile.TenantId.ToString",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 180
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 183
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserRoles, rolesStr",
            "visibleLabel": "StorageKeys.UserRoles, rolesStr",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 183
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 185
          },
          {
            "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",
            "semanticLabel": "profile.Email, profile.TenantId.ToString(), rolesStr",
            "visibleLabel": "profile.Email, profile.TenantId.ToString , rolesStr",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 185
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 187
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 190
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 192
          },
          {
            "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",
            "semanticLabel": "exception",
            "visibleLabel": "exception",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 192
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 194
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 196
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 198
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 200
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.UI.Shared/Services/IdentityService.cs"
          ],
          "warnings": [
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target NexusAuthenticationStateProvider.NotifyUserAuthentication in unknown could not be matched to an extracted method symbol."
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "---\nconfig:\n  flowchart:\n    defaultRenderer: \"elk\"\n---\nflowchart TD\n    method_nyrl9z_getprofileinternalasync__call_169_LogoutAsync[[\"LogoutAsync\"]]\n    method_nyrl9z_getprofileinternalasync__call_179_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_nyrl9z_getprofileinternalasync__call_180_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_nyrl9z_getprofileinternalasync__call_183_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_nyrl9z_getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication[[\"NexusAuthenticationStateProvider.NotifyUserAuthentication\"]]\n    method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition{\"!System.OperatingSystem.IsBrowser()\"}\n    method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__false(\"false\")\n    method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge(\"merge\")\n    method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__true(\"true\")\n    method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__condition{\"System.OperatingSystem.IsBrowser()\"}\n    method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__false(\"continue\")\n    method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__merge(\"merge\")\n    method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__true(\"return null\")\n    method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition{\"DateTime.UtcNow - _lastFetchAttempt < TimeSpan.FromSeconds(5)\"}\n    method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__false(\"false\")\n    method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge(\"merge\")\n    method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__true(\"true\")\n    method_nyrl9z_getprofileinternalasync__action_157_rate_limit_157__linear(\"Throttle repeated fetches\")\n    method_nyrl9z_getprofileinternalasync__action_162_state_change_162__linear(\"Update last fetch timestamp\")\n    method_nyrl9z_getprofileinternalasync__action_163_getprofileinternalasync_try_163_4__try(\"Begins protected execution\")\n    method_nyrl9z_getprofileinternalasync__action_165_getprofileinternalasync_await_165_5__await[[\"Waits for async work\"]]\n    method_nyrl9z_getprofileinternalasync__action_167_branch_167__condition{\"response.StatusCode == Unauthorized\"}\n    method_nyrl9z_getprofileinternalasync__action_167_branch_167__false(\"continue\")\n    method_nyrl9z_getprofileinternalasync__action_167_branch_167__merge(\"merge\")\n    method_nyrl9z_getprofileinternalasync__action_167_branch_167__true(\"logout and return null\")\n    method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition{\"response.StatusCode == System.Net.HttpStatusCode.Unauthorized\"}\n    method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__false(\"false\")\n    method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge(\"merge\")\n    method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__true(\"true\")\n    method_nyrl9z_getprofileinternalasync__action_169_getprofileinternalasync_await_169_7__await[[\"Waits for async work\"]]\n    method_nyrl9z_getprofileinternalasync__action_173_branch_173__condition{\"response.IsSuccessStatusCode\"}\n    method_nyrl9z_getprofileinternalasync__action_173_branch_173__false(\"false\")\n    method_nyrl9z_getprofileinternalasync__action_173_branch_173__merge(\"merge\")\n    method_nyrl9z_getprofileinternalasync__action_173_branch_173__true(\"true\")\n    method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition{\"response.IsSuccessStatusCode\"}\n    method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__false(\"false\")\n    method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge(\"merge\")\n    method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__true(\"true\")\n    method_nyrl9z_getprofileinternalasync__action_175_getprofileinternalasync_await_175_10__await[[\"Waits for async work\"]]\n    method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition{\"profile != null\"}\n    method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__false(\"false\")\n    method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge(\"merge\")\n    method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__true(\"true\")\n    method_nyrl9z_getprofileinternalasync__action_179_getprofileinternalasync_await_179_12__await[[\"Waits for async work\"]]\n    method_nyrl9z_getprofileinternalasync__action_180_getprofileinternalasync_await_180_13__await[[\"Waits for async work\"]]\n    method_nyrl9z_getprofileinternalasync__action_183_getprofileinternalasync_await_183_14__await[[\"Waits for async work\"]]\n    method_nyrl9z_getprofileinternalasync__action_192_getprofileinternalasync_catch_192_18__catch(\"Handles exception path\")\n    method_nyrl9z_getprofileinternalasync__action_192_try_catch_192__linear(\"Swallow fetch/parsing errors\")\n    method_nyrl9z_getprofileinternalasync__action_196_getprofileinternalasync_finally_196_20__finally(\"Runs cleanup or finalization\")\n    method_nyrl9z_getprofileinternalasync__action_198_finally_198__finally(\"Reset in-flight task marker\")\n    method_nyrl9z_getprofileinternalasync__entry([\"GetProfileInternalAsync entry\"])\n    method_nyrl9z_getprofileinternalasync__action_165_external_call_165__linear(\"GET profile\")\n    method_nyrl9z_getprofileinternalasync__action_185_getprofileinternalasync_notification_185_15__linear[/\"Sends notification\"/]\n    method_nyrl9z_getprofileinternalasync__action_154_getprofileinternalasync_return_154_1__return([\"Returns result\"])\n    method_nyrl9z_getprofileinternalasync__action_159_getprofileinternalasync_return_159_3__return([\"Returns result\"])\n    method_nyrl9z_getprofileinternalasync__action_170_getprofileinternalasync_return_170_8__return([\"Returns result\"])\n    method_nyrl9z_getprofileinternalasync__action_187_getprofileinternalasync_return_187_16__return([\"Returns result\"])\n    method_nyrl9z_getprofileinternalasync__action_190_getprofileinternalasync_return_190_17__return([\"Returns result\"])\n    method_nyrl9z_getprofileinternalasync__action_194_getprofileinternalasync_return_194_19__return([\"Returns result\"])\n    method_nyrl9z_getprofileinternalasync__implicit_return([\"return\"])\n    method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition -->|false| method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__false\n    method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition -->|true| method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__true\n    method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__false -->|next| method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge\n    method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge -->|return| method_nyrl9z_getprofileinternalasync__action_154_getprofileinternalasync_return_154_1__return\n    method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__true -->|next| method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__merge\n    method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__condition -->|continue| method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__false\n    method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__condition -->|return null| method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__true\n    method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__false -->|next| method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__merge\n    method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__merge -->|next| method_nyrl9z_getprofileinternalasync__action_152_getprofileinternalasync_branch_152_0__condition\n    method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__true -->|next| method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__merge\n    method_nyrl9z_getprofileinternalasync__action_154_getprofileinternalasync_return_154_1__return -->|next| method_nyrl9z_getprofileinternalasync__action_157_rate_limit_157__linear\n    method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition -->|false| method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__false\n    method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition -->|true| method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__true\n    method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__false -->|next| method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge\n    method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge -->|return| method_nyrl9z_getprofileinternalasync__action_159_getprofileinternalasync_return_159_3__return\n    method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__true -->|next| method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__merge\n    method_nyrl9z_getprofileinternalasync__action_157_rate_limit_157__linear -->|next| method_nyrl9z_getprofileinternalasync__action_157_getprofileinternalasync_branch_157_2__condition\n    method_nyrl9z_getprofileinternalasync__action_159_getprofileinternalasync_return_159_3__return -->|next| method_nyrl9z_getprofileinternalasync__action_162_state_change_162__linear\n    method_nyrl9z_getprofileinternalasync__action_162_state_change_162__linear -->|next| method_nyrl9z_getprofileinternalasync__action_163_getprofileinternalasync_try_163_4__try\n    method_nyrl9z_getprofileinternalasync__action_163_getprofileinternalasync_try_163_4__try -->|next| method_nyrl9z_getprofileinternalasync__action_165_getprofileinternalasync_await_165_5__await\n    method_nyrl9z_getprofileinternalasync__action_165_external_call_165__linear -->|next| method_nyrl9z_getprofileinternalasync__action_167_branch_167__condition\n    method_nyrl9z_getprofileinternalasync__action_165_getprofileinternalasync_await_165_5__await -->|next| method_nyrl9z_getprofileinternalasync__action_165_external_call_165__linear\n    method_nyrl9z_getprofileinternalasync__action_167_branch_167__condition -->|continue| method_nyrl9z_getprofileinternalasync__action_167_branch_167__false\n    method_nyrl9z_getprofileinternalasync__action_167_branch_167__condition -->|logout and return null| method_nyrl9z_getprofileinternalasync__action_167_branch_167__true\n    method_nyrl9z_getprofileinternalasync__action_167_branch_167__false -->|next| method_nyrl9z_getprofileinternalasync__action_167_branch_167__merge\n    method_nyrl9z_getprofileinternalasync__action_167_branch_167__merge -->|next| method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition\n    method_nyrl9z_getprofileinternalasync__action_167_branch_167__true -->|next| method_nyrl9z_getprofileinternalasync__action_167_branch_167__merge\n    method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition -->|false| method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__false\n    method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__condition -->|true| method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__true\n    method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__false -->|next| method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge\n    method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge -->|next| method_nyrl9z_getprofileinternalasync__action_169_getprofileinternalasync_await_169_7__await\n    method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__true -->|next| method_nyrl9z_getprofileinternalasync__action_167_getprofileinternalasync_branch_167_6__merge\n    method_nyrl9z_getprofileinternalasync__action_169_getprofileinternalasync_await_169_7__await -->|no parameters called on 401| method_nyrl9z_getprofileinternalasync__call_169_LogoutAsync\n    method_nyrl9z_getprofileinternalasync__action_170_getprofileinternalasync_return_170_8__return -->|next| method_nyrl9z_getprofileinternalasync__action_173_branch_173__condition\n    method_nyrl9z_getprofileinternalasync__action_173_branch_173__condition -->|false| method_nyrl9z_getprofileinternalasync__action_173_branch_173__false\n    method_nyrl9z_getprofileinternalasync__action_173_branch_173__condition -->|true| method_nyrl9z_getprofileinternalasync__action_173_branch_173__true\n    method_nyrl9z_getprofileinternalasync__action_173_branch_173__false -->|next| method_nyrl9z_getprofileinternalasync__action_173_branch_173__merge\n    method_nyrl9z_getprofileinternalasync__action_173_branch_173__merge -->|next| method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition\n    method_nyrl9z_getprofileinternalasync__action_173_branch_173__true -->|next| method_nyrl9z_getprofileinternalasync__action_173_branch_173__merge\n    method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition -->|false| method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__false\n    method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__condition -->|true| method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__true\n    method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__false -->|next| method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge\n    method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge -->|next| method_nyrl9z_getprofileinternalasync__action_175_getprofileinternalasync_await_175_10__await\n    method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__true -->|next| method_nyrl9z_getprofileinternalasync__action_173_getprofileinternalasync_branch_173_9__merge\n    method_nyrl9z_getprofileinternalasync__action_175_getprofileinternalasync_await_175_10__await -->|next| method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition\n    method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition -->|false| method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__false\n    method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__condition -->|true| method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__true\n    method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__false -->|next| method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge\n    method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge -->|next| method_nyrl9z_getprofileinternalasync__action_179_getprofileinternalasync_await_179_12__await\n    method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__true -->|next| method_nyrl9z_getprofileinternalasync__action_176_getprofileinternalasync_branch_176_11__merge\n    method_nyrl9z_getprofileinternalasync__action_179_getprofileinternalasync_await_179_12__await -->|StorageKeys.UserEmail, profile.Email| method_nyrl9z_getprofileinternalasync__call_179_INativeStorageService_SaveSecureString\n    method_nyrl9z_getprofileinternalasync__action_180_getprofileinternalasync_await_180_13__await -->|StorageKeys.UserTenant, profile.TenantId.ToString| method_nyrl9z_getprofileinternalasync__call_180_INativeStorageService_SaveSecureString\n    method_nyrl9z_getprofileinternalasync__action_183_getprofileinternalasync_await_183_14__await -->|StorageKeys.UserRoles, rolesStr| method_nyrl9z_getprofileinternalasync__call_183_INativeStorageService_SaveSecureString\n    method_nyrl9z_getprofileinternalasync__action_185_getprofileinternalasync_notification_185_15__linear -->|profile.Email, profile.TenantId.ToString , rolesStr| method_nyrl9z_getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication\n    method_nyrl9z_getprofileinternalasync__action_187_getprofileinternalasync_return_187_16__return -->|return| method_nyrl9z_getprofileinternalasync__action_190_getprofileinternalasync_return_190_17__return\n    method_nyrl9z_getprofileinternalasync__action_190_getprofileinternalasync_return_190_17__return -->|next| method_nyrl9z_getprofileinternalasync__action_192_try_catch_192__linear\n    method_nyrl9z_getprofileinternalasync__action_192_getprofileinternalasync_catch_192_18__catch -->|return| method_nyrl9z_getprofileinternalasync__action_194_getprofileinternalasync_return_194_19__return\n    method_nyrl9z_getprofileinternalasync__action_192_try_catch_192__linear -->|exception| method_nyrl9z_getprofileinternalasync__action_192_getprofileinternalasync_catch_192_18__catch\n    method_nyrl9z_getprofileinternalasync__action_194_getprofileinternalasync_return_194_19__return -->|next| method_nyrl9z_getprofileinternalasync__action_196_getprofileinternalasync_finally_196_20__finally\n    method_nyrl9z_getprofileinternalasync__action_196_getprofileinternalasync_finally_196_20__finally -->|next| method_nyrl9z_getprofileinternalasync__action_198_finally_198__finally\n    method_nyrl9z_getprofileinternalasync__action_198_finally_198__finally -->|return| method_nyrl9z_getprofileinternalasync__implicit_return\n    method_nyrl9z_getprofileinternalasync__call_169_LogoutAsync -->|return| method_nyrl9z_getprofileinternalasync__action_170_getprofileinternalasync_return_170_8__return\n    method_nyrl9z_getprofileinternalasync__call_179_INativeStorageService_SaveSecureString -->|next| method_nyrl9z_getprofileinternalasync__action_180_getprofileinternalasync_await_180_13__await\n    method_nyrl9z_getprofileinternalasync__call_180_INativeStorageService_SaveSecureString -->|next| method_nyrl9z_getprofileinternalasync__action_183_getprofileinternalasync_await_183_14__await\n    method_nyrl9z_getprofileinternalasync__call_183_INativeStorageService_SaveSecureString -->|next| method_nyrl9z_getprofileinternalasync__action_185_getprofileinternalasync_notification_185_15__linear\n    method_nyrl9z_getprofileinternalasync__call_185_NexusAuthenticationStateProvider_NotifyUserAuthentication -->|return| method_nyrl9z_getprofileinternalasync__action_187_getprofileinternalasync_return_187_16__return\n    method_nyrl9z_getprofileinternalasync__entry -->|next| method_nyrl9z_getprofileinternalasync__action_152_guard_clause_152__condition",
      "warnings": [
        "diagram method_nyrl9z_getprofileinternalasync__fragment_diagram exceeds preferred complexity thresholds (60 nodes, 67 edges)."
      ]
    },
    {
      "id": "method_nb75z9_refreshtokenasync__fragment_diagram",
      "purpose": "control-flow",
      "title": "RefreshTokenAsync() Control Flow",
      "required": true,
      "diagram": {
        "id": "method_nb75z9_refreshtokenasync__fragment_diagram",
        "kind": "control-flow",
        "title": "RefreshTokenAsync() Control Flow",
        "direction": "TD",
        "nodes": [
          {
            "id": "method_nb75z9_refreshtokenasync__entry",
            "kind": "step",
            "label": "RefreshTokenAsync entry",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 202
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_204_try_catch_204__linear",
            "kind": "step",
            "label": "Refresh guarded",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 204
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_204_refreshtokenasync_try_204_0__try",
            "kind": "step",
            "label": "Begins protected execution",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 204
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_206_refreshtokenasync_await_206_1__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 206
          },
          {
            "id": "method_nb75z9_refreshtokenasync__call_206_INativeStorageService_GetSecureString",
            "kind": "method",
            "label": "INativeStorageService.GetSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 206
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_209_guard_clause_209__condition",
            "kind": "step",
            "label": "string.IsNullOrEmpty(refreshToken)",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_209_guard_clause_209__true",
            "kind": "step",
            "label": "fail",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_209_guard_clause_209__false",
            "kind": "step",
            "label": "continue",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_209_guard_clause_209__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition",
            "kind": "step",
            "label": "string.IsNullOrEmpty(refreshToken)) return Result.Fail(\\\"Brak tokena odświeżania.\\\"",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__true",
            "kind": "step",
            "label": "exit",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__false",
            "kind": "step",
            "label": "continue",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_211_refreshtokenasync_await_211_3__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 211
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_211_external_call_211__linear",
            "kind": "dependency",
            "label": "POST refresh",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 211
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_213_branch_213__condition",
            "kind": "step",
            "label": "response.IsSuccessStatusCode and loginResult.AccessToken present",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_213_branch_213__true",
            "kind": "step",
            "label": "persist tokens and refresh profile",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_213_branch_213__false",
            "kind": "step",
            "label": "return session expired",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_213_branch_213__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition",
            "kind": "step",
            "label": "response.IsSuccessStatusCode",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_215_refreshtokenasync_await_215_5__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 215
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition",
            "kind": "step",
            "label": "loginResult != null && !string.IsNullOrEmpty(loginResult.AccessToken)",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 216
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 216
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 216
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 216
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_218_refreshtokenasync_await_218_7__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 218
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_218_state_change_218__linear",
            "kind": "step",
            "label": "Persist new tokens and invalidate state",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 218
          },
          {
            "id": "method_nb75z9_refreshtokenasync__call_218_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 218
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition",
            "kind": "step",
            "label": "!string.IsNullOrEmpty(loginResult.RefreshToken)",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 219
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 219
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 219
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 219
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_221_refreshtokenasync_await_221_9__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 221
          },
          {
            "id": "method_nb75z9_refreshtokenasync__call_221_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 221
          },
          {
            "id": "method_nb75z9_refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache",
            "kind": "method",
            "label": "NexusAuthenticationStateProvider.ClearCache",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 225
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_await_226_11__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition",
            "kind": "step",
            "label": "OnStateInvalidated != null) await OnStateInvalidated.Invoke(",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "id": "method_nb75z9_refreshtokenasync__call_226_OnStateInvalidated_Invoke",
            "kind": "method",
            "label": "OnStateInvalidated.Invoke",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_228_refreshtokenasync_await_228_12__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 228
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_228_orchestration_228__linear",
            "kind": "step",
            "label": "Refresh profile after token renewal",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 228
          },
          {
            "id": "method_nb75z9_refreshtokenasync__call_228_GetProfileAsync",
            "kind": "method",
            "label": "GetProfileAsync",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 228
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition",
            "kind": "step",
            "label": "profileResult.IsSuccess",
            "shape": "diamond",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 229
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__true",
            "kind": "step",
            "label": "true",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 229
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__false",
            "kind": "step",
            "label": "false",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 229
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge",
            "kind": "step",
            "label": "merge",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 229
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_232_refreshtokenasync_await_232_14__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 232
          },
          {
            "id": "method_nb75z9_refreshtokenasync__call_232_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 232
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_233_refreshtokenasync_await_233_15__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 233
          },
          {
            "id": "method_nb75z9_refreshtokenasync__call_233_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 233
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_236_refreshtokenasync_await_236_16__await",
            "kind": "step",
            "label": "Waits for async work",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 236
          },
          {
            "id": "method_nb75z9_refreshtokenasync__call_236_INativeStorageService_SaveSecureString",
            "kind": "method",
            "label": "INativeStorageService.SaveSecureString",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 236
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_238_refreshtokenasync_notification_238_17__linear",
            "kind": "dependency",
            "label": "Sends notification",
            "shape": "doc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 238
          },
          {
            "id": "method_nb75z9_refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication",
            "kind": "method",
            "label": "NexusAuthenticationStateProvider.NotifyUserAuthentication",
            "shape": "subproc",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 238
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_241_refreshtokenasync_return_241_18__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 241
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_241_return_241__return",
            "kind": "return",
            "label": "Return final result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 241
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_244_refreshtokenasync_return_244_19__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 244
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_246_refreshtokenasync_catch_246_20__catch",
            "kind": "step",
            "label": "catch Exception ex",
            "shape": "rounded",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 246
          },
          {
            "id": "method_nb75z9_refreshtokenasync__action_248_refreshtokenasync_return_248_21__return",
            "kind": "return",
            "label": "Returns result",
            "shape": "stadium",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 248
          }
        ],
        "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 204
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 204
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 206
          },
          {
            "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",
            "semanticLabel": "RefreshTokenKey",
            "visibleLabel": "RefreshTokenKey",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 206
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "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",
            "semanticLabel": "fail",
            "visibleLabel": "fail",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "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",
            "semanticLabel": "continue",
            "visibleLabel": "continue",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "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",
            "semanticLabel": "exit",
            "visibleLabel": "exit",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "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",
            "semanticLabel": "continue",
            "visibleLabel": "continue",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 209
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 211
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 211
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "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",
            "semanticLabel": "persist tokens and refresh profile",
            "visibleLabel": "persist tokens and refresh profile",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "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",
            "semanticLabel": "return session expired",
            "visibleLabel": "return session expired",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 213
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 215
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 216
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 216
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 216
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 216
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 216
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 218
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 218
          },
          {
            "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",
            "semanticLabel": "TokenKey, loginResult.AccessToken",
            "visibleLabel": "TokenKey, loginResult.AccessToken",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 218
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 219
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 219
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 219
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 219
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 219
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 221
          },
          {
            "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",
            "semanticLabel": "RefreshTokenKey, loginResult.RefreshToken",
            "visibleLabel": "RefreshTokenKey, loginResult.RefreshToken",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 221
          },
          {
            "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",
            "semanticLabel": "cast _authStateProvider and call ClearCache",
            "visibleLabel": "cast _authStateProvider and call ClearCache",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 225
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "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",
            "semanticLabel": "invoke event if not null",
            "visibleLabel": "invoke event if not null",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 226
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 228
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 228
          },
          {
            "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",
            "semanticLabel": "no parameters",
            "visibleLabel": "no parameters",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 228
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 229
          },
          {
            "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",
            "semanticLabel": "true",
            "visibleLabel": "true",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 229
          },
          {
            "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",
            "semanticLabel": "false",
            "visibleLabel": "false",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 229
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 229
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 229
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 232
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserEmail, profile.Email",
            "visibleLabel": "StorageKeys.UserEmail, profile.Email",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 232
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 233
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserTenant, profile.TenantId.ToString()",
            "visibleLabel": "StorageKeys.UserTenant, profile.TenantId.ToString",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 233
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 236
          },
          {
            "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",
            "semanticLabel": "StorageKeys.UserRoles, rolesStr",
            "visibleLabel": "StorageKeys.UserRoles, rolesStr",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 236
          },
          {
            "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",
            "semanticLabel": "next",
            "visibleLabel": "next",
            "relation": "uses",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 238
          },
          {
            "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",
            "semanticLabel": "profile.Email, profile.TenantId.ToString(), rolesStr",
            "visibleLabel": "profile.Email, profile.TenantId.ToString , rolesStr",
            "relation": "calls",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 238
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 241
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 241
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 244
          },
          {
            "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",
            "semanticLabel": "exception",
            "visibleLabel": "exception",
            "relation": "transforms",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 246
          },
          {
            "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",
            "semanticLabel": "return",
            "visibleLabel": "return",
            "relation": "returns",
            "sourcePath": "NexusReader.UI.Shared/Services/IdentityService.cs",
            "sourceLine": 248
          }
        ],
        "metadata": {
          "evidencePaths": [
            "NexusReader.UI.Shared/Services/IdentityService.cs"
          ],
          "warnings": [
            "Call target INativeStorageService.GetSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target NexusAuthenticationStateProvider.ClearCache in unknown could not be matched to an extracted method symbol.",
            "Call target OnStateInvalidated.Invoke in NexusReader.UI.Shared/Services/IdentityService.cs could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target INativeStorageService.SaveSecureString in unknown could not be matched to an extracted method symbol.",
            "Call target NexusAuthenticationStateProvider.NotifyUserAuthentication in unknown could not be matched to an extracted method symbol."
          ]
        },
        "subgraphs": []
      },
      "mermaidSource": "---\nconfig:\n  flowchart:\n    defaultRenderer: \"elk\"\n---\nflowchart TD\n    method_nb75z9_refreshtokenasync__call_206_INativeStorageService_GetSecureString[[\"INativeStorageService.GetSecureString\"]]\n    method_nb75z9_refreshtokenasync__call_218_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_nb75z9_refreshtokenasync__call_221_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_nb75z9_refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache[[\"NexusAuthenticationStateProvider.ClearCache\"]]\n    method_nb75z9_refreshtokenasync__call_226_OnStateInvalidated_Invoke[[\"OnStateInvalidated.Invoke\"]]\n    method_nb75z9_refreshtokenasync__call_228_GetProfileAsync[[\"GetProfileAsync\"]]\n    method_nb75z9_refreshtokenasync__call_232_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_nb75z9_refreshtokenasync__call_233_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_nb75z9_refreshtokenasync__call_236_INativeStorageService_SaveSecureString[[\"INativeStorageService.SaveSecureString\"]]\n    method_nb75z9_refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication[[\"NexusAuthenticationStateProvider.NotifyUserAuthentication\"]]\n    method_nb75z9_refreshtokenasync__action_204_refreshtokenasync_try_204_0__try(\"Begins protected execution\")\n    method_nb75z9_refreshtokenasync__action_204_try_catch_204__linear(\"Refresh guarded\")\n    method_nb75z9_refreshtokenasync__action_206_refreshtokenasync_await_206_1__await[[\"Waits for async work\"]]\n    method_nb75z9_refreshtokenasync__action_209_guard_clause_209__condition{\"string.IsNullOrEmpty(refreshToken)\"}\n    method_nb75z9_refreshtokenasync__action_209_guard_clause_209__false(\"continue\")\n    method_nb75z9_refreshtokenasync__action_209_guard_clause_209__merge(\"merge\")\n    method_nb75z9_refreshtokenasync__action_209_guard_clause_209__true(\"fail\")\n    method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition{\"string.IsNullOrEmpty(refreshToken)) return Result.Fail(\\\\\"Brak tokena odświeżania.\\\\\"\"}\n    method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__false(\"continue\")\n    method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge(\"merge\")\n    method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__true(\"exit\")\n    method_nb75z9_refreshtokenasync__action_211_refreshtokenasync_await_211_3__await[[\"Waits for async work\"]]\n    method_nb75z9_refreshtokenasync__action_213_branch_213__condition{\"response.IsSuccessStatusCode and loginResult.AccessToken present\"}\n    method_nb75z9_refreshtokenasync__action_213_branch_213__false(\"return session expired\")\n    method_nb75z9_refreshtokenasync__action_213_branch_213__merge(\"merge\")\n    method_nb75z9_refreshtokenasync__action_213_branch_213__true(\"persist tokens and refresh profile\")\n    method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition{\"response.IsSuccessStatusCode\"}\n    method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__false(\"false\")\n    method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge(\"merge\")\n    method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__true(\"true\")\n    method_nb75z9_refreshtokenasync__action_215_refreshtokenasync_await_215_5__await[[\"Waits for async work\"]]\n    method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition{\"loginResult != null && !string.IsNullOrEmpty(loginResult.AccessToken)\"}\n    method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__false(\"false\")\n    method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge(\"merge\")\n    method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__true(\"true\")\n    method_nb75z9_refreshtokenasync__action_218_refreshtokenasync_await_218_7__await[[\"Waits for async work\"]]\n    method_nb75z9_refreshtokenasync__action_218_state_change_218__linear(\"Persist new tokens and invalidate state\")\n    method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition{\"!string.IsNullOrEmpty(loginResult.RefreshToken)\"}\n    method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__false(\"false\")\n    method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge(\"merge\")\n    method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__true(\"true\")\n    method_nb75z9_refreshtokenasync__action_221_refreshtokenasync_await_221_9__await[[\"Waits for async work\"]]\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_await_226_11__await[[\"Waits for async work\"]]\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition{\"OnStateInvalidated != null) await OnStateInvalidated.Invoke(\"}\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__false(\"false\")\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge(\"merge\")\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__true(\"true\")\n    method_nb75z9_refreshtokenasync__action_228_orchestration_228__linear(\"Refresh profile after token renewal\")\n    method_nb75z9_refreshtokenasync__action_228_refreshtokenasync_await_228_12__await[[\"Waits for async work\"]]\n    method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition{\"profileResult.IsSuccess\"}\n    method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__false(\"false\")\n    method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge(\"merge\")\n    method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__true(\"true\")\n    method_nb75z9_refreshtokenasync__action_232_refreshtokenasync_await_232_14__await[[\"Waits for async work\"]]\n    method_nb75z9_refreshtokenasync__action_233_refreshtokenasync_await_233_15__await[[\"Waits for async work\"]]\n    method_nb75z9_refreshtokenasync__action_236_refreshtokenasync_await_236_16__await[[\"Waits for async work\"]]\n    method_nb75z9_refreshtokenasync__action_246_refreshtokenasync_catch_246_20__catch(\"catch Exception ex\")\n    method_nb75z9_refreshtokenasync__entry([\"RefreshTokenAsync entry\"])\n    method_nb75z9_refreshtokenasync__action_211_external_call_211__linear(\"POST refresh\")\n    method_nb75z9_refreshtokenasync__action_238_refreshtokenasync_notification_238_17__linear[/\"Sends notification\"/]\n    method_nb75z9_refreshtokenasync__action_241_refreshtokenasync_return_241_18__return([\"Returns result\"])\n    method_nb75z9_refreshtokenasync__action_241_return_241__return([\"Return final result\"])\n    method_nb75z9_refreshtokenasync__action_244_refreshtokenasync_return_244_19__return([\"Returns result\"])\n    method_nb75z9_refreshtokenasync__action_248_refreshtokenasync_return_248_21__return([\"Returns result\"])\n    method_nb75z9_refreshtokenasync__action_204_refreshtokenasync_try_204_0__try -->|next| method_nb75z9_refreshtokenasync__action_206_refreshtokenasync_await_206_1__await\n    method_nb75z9_refreshtokenasync__action_204_try_catch_204__linear -->|next| method_nb75z9_refreshtokenasync__action_204_refreshtokenasync_try_204_0__try\n    method_nb75z9_refreshtokenasync__action_206_refreshtokenasync_await_206_1__await -->|RefreshTokenKey| method_nb75z9_refreshtokenasync__call_206_INativeStorageService_GetSecureString\n    method_nb75z9_refreshtokenasync__action_209_guard_clause_209__condition -->|continue| method_nb75z9_refreshtokenasync__action_209_guard_clause_209__false\n    method_nb75z9_refreshtokenasync__action_209_guard_clause_209__condition -->|fail| method_nb75z9_refreshtokenasync__action_209_guard_clause_209__true\n    method_nb75z9_refreshtokenasync__action_209_guard_clause_209__false -->|next| method_nb75z9_refreshtokenasync__action_209_guard_clause_209__merge\n    method_nb75z9_refreshtokenasync__action_209_guard_clause_209__merge -->|next| method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition\n    method_nb75z9_refreshtokenasync__action_209_guard_clause_209__true -->|next| method_nb75z9_refreshtokenasync__action_209_guard_clause_209__merge\n    method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition -->|continue| method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__false\n    method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__condition -->|exit| method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__true\n    method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__false -->|next| method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge\n    method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge -->|next| method_nb75z9_refreshtokenasync__action_211_refreshtokenasync_await_211_3__await\n    method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__true -->|next| method_nb75z9_refreshtokenasync__action_209_refreshtokenasync_guard_clause_209_2__merge\n    method_nb75z9_refreshtokenasync__action_211_external_call_211__linear -->|next| method_nb75z9_refreshtokenasync__action_213_branch_213__condition\n    method_nb75z9_refreshtokenasync__action_211_refreshtokenasync_await_211_3__await -->|next| method_nb75z9_refreshtokenasync__action_211_external_call_211__linear\n    method_nb75z9_refreshtokenasync__action_213_branch_213__condition -->|return session expired| method_nb75z9_refreshtokenasync__action_213_branch_213__false\n    method_nb75z9_refreshtokenasync__action_213_branch_213__condition -->|persist tokens and refresh profile| method_nb75z9_refreshtokenasync__action_213_branch_213__true\n    method_nb75z9_refreshtokenasync__action_213_branch_213__false -->|next| method_nb75z9_refreshtokenasync__action_213_branch_213__merge\n    method_nb75z9_refreshtokenasync__action_213_branch_213__merge -->|next| method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition\n    method_nb75z9_refreshtokenasync__action_213_branch_213__true -->|next| method_nb75z9_refreshtokenasync__action_213_branch_213__merge\n    method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition -->|false| method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__false\n    method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__condition -->|true| method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__true\n    method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__false -->|next| method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge\n    method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge -->|next| method_nb75z9_refreshtokenasync__action_215_refreshtokenasync_await_215_5__await\n    method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__true -->|next| method_nb75z9_refreshtokenasync__action_213_refreshtokenasync_branch_213_4__merge\n    method_nb75z9_refreshtokenasync__action_215_refreshtokenasync_await_215_5__await -->|next| method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition\n    method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition -->|false| method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__false\n    method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__condition -->|true| method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__true\n    method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__false -->|next| method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge\n    method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge -->|next| method_nb75z9_refreshtokenasync__action_218_refreshtokenasync_await_218_7__await\n    method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__true -->|next| method_nb75z9_refreshtokenasync__action_216_refreshtokenasync_branch_216_6__merge\n    method_nb75z9_refreshtokenasync__action_218_refreshtokenasync_await_218_7__await -->|next| method_nb75z9_refreshtokenasync__action_218_state_change_218__linear\n    method_nb75z9_refreshtokenasync__action_218_state_change_218__linear -->|TokenKey, loginResult.AccessToken| method_nb75z9_refreshtokenasync__call_218_INativeStorageService_SaveSecureString\n    method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition -->|false| method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__false\n    method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition -->|true| method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__true\n    method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__false -->|next| method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge\n    method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge -->|next| method_nb75z9_refreshtokenasync__action_221_refreshtokenasync_await_221_9__await\n    method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__true -->|next| method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__merge\n    method_nb75z9_refreshtokenasync__action_221_refreshtokenasync_await_221_9__await -->|RefreshTokenKey, loginResult.RefreshToken| method_nb75z9_refreshtokenasync__call_221_INativeStorageService_SaveSecureString\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_await_226_11__await -->|next| method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition -->|false| method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__false\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__condition -->|true| method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__true\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__false -->|next| method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge -->|invoke event if not null| method_nb75z9_refreshtokenasync__call_226_OnStateInvalidated_Invoke\n    method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__true -->|next| method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_branch_226_10__merge\n    method_nb75z9_refreshtokenasync__action_228_orchestration_228__linear -->|no parameters| method_nb75z9_refreshtokenasync__call_228_GetProfileAsync\n    method_nb75z9_refreshtokenasync__action_228_refreshtokenasync_await_228_12__await -->|next| method_nb75z9_refreshtokenasync__action_228_orchestration_228__linear\n    method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition -->|false| method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__false\n    method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition -->|true| method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__true\n    method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__false -->|next| method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge\n    method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge -->|next| method_nb75z9_refreshtokenasync__action_232_refreshtokenasync_await_232_14__await\n    method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__true -->|next| method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__merge\n    method_nb75z9_refreshtokenasync__action_232_refreshtokenasync_await_232_14__await -->|StorageKeys.UserEmail, profile.Email| method_nb75z9_refreshtokenasync__call_232_INativeStorageService_SaveSecureString\n    method_nb75z9_refreshtokenasync__action_233_refreshtokenasync_await_233_15__await -->|StorageKeys.UserTenant, profile.TenantId.ToString| method_nb75z9_refreshtokenasync__call_233_INativeStorageService_SaveSecureString\n    method_nb75z9_refreshtokenasync__action_236_refreshtokenasync_await_236_16__await -->|StorageKeys.UserRoles, rolesStr| method_nb75z9_refreshtokenasync__call_236_INativeStorageService_SaveSecureString\n    method_nb75z9_refreshtokenasync__action_238_refreshtokenasync_notification_238_17__linear -->|profile.Email, profile.TenantId.ToString , rolesStr| method_nb75z9_refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication\n    method_nb75z9_refreshtokenasync__action_241_refreshtokenasync_return_241_18__return -->|return| method_nb75z9_refreshtokenasync__action_241_return_241__return\n    method_nb75z9_refreshtokenasync__action_241_return_241__return -->|return| method_nb75z9_refreshtokenasync__action_244_refreshtokenasync_return_244_19__return\n    method_nb75z9_refreshtokenasync__action_244_refreshtokenasync_return_244_19__return -->|exception| method_nb75z9_refreshtokenasync__action_246_refreshtokenasync_catch_246_20__catch\n    method_nb75z9_refreshtokenasync__action_246_refreshtokenasync_catch_246_20__catch -->|return| method_nb75z9_refreshtokenasync__action_248_refreshtokenasync_return_248_21__return\n    method_nb75z9_refreshtokenasync__call_206_INativeStorageService_GetSecureString -->|next| method_nb75z9_refreshtokenasync__action_209_guard_clause_209__condition\n    method_nb75z9_refreshtokenasync__call_218_INativeStorageService_SaveSecureString -->|next| method_nb75z9_refreshtokenasync__action_219_refreshtokenasync_branch_219_8__condition\n    method_nb75z9_refreshtokenasync__call_221_INativeStorageService_SaveSecureString -->|cast _authStateProvider and call ClearCache| method_nb75z9_refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache\n    method_nb75z9_refreshtokenasync__call_225_NexusAuthenticationStateProvider_ClearCache -->|next| method_nb75z9_refreshtokenasync__action_226_refreshtokenasync_await_226_11__await\n    method_nb75z9_refreshtokenasync__call_226_OnStateInvalidated_Invoke -->|next| method_nb75z9_refreshtokenasync__action_228_refreshtokenasync_await_228_12__await\n    method_nb75z9_refreshtokenasync__call_228_GetProfileAsync -->|next| method_nb75z9_refreshtokenasync__action_229_refreshtokenasync_branch_229_13__condition\n    method_nb75z9_refreshtokenasync__call_232_INativeStorageService_SaveSecureString -->|next| method_nb75z9_refreshtokenasync__action_233_refreshtokenasync_await_233_15__await\n    method_nb75z9_refreshtokenasync__call_233_INativeStorageService_SaveSecureString -->|next| method_nb75z9_refreshtokenasync__action_236_refreshtokenasync_await_236_16__await\n    method_nb75z9_refreshtokenasync__call_236_INativeStorageService_SaveSecureString -->|next| method_nb75z9_refreshtokenasync__action_238_refreshtokenasync_notification_238_17__linear\n    method_nb75z9_refreshtokenasync__call_238_NexusAuthenticationStateProvider_NotifyUserAuthentication -->|return| method_nb75z9_refreshtokenasync__action_241_refreshtokenasync_return_241_18__return\n    method_nb75z9_refreshtokenasync__entry -->|next| method_nb75z9_refreshtokenasync__action_204_try_catch_204__linear",
      "warnings": [
        "diagram method_nb75z9_refreshtokenasync__fragment_diagram exceeds preferred complexity thresholds (64 nodes, 71 edges)."
      ]
    }
  ],
  "renderHints": {
    "preferredSurface": "three-d",
    "defaultDiagramId": "file_b8uv8h_identityservice_cs_execution_view",
    "controlFlowDiagramIds": [
      "method_kf6qfg_registerasync__fragment_diagram",
      "method_b6asoe_loginasync__fragment_diagram",
      "method_1i33wis_logoutasync__fragment_diagram",
      "method_1u6514u_getprofileasync__fragment_diagram",
      "method_nyrl9z_getprofileinternalasync__fragment_diagram",
      "method_nb75z9_refreshtokenasync__fragment_diagram"
    ],
    "defaultControlFlowDiagramIdsBySymbolId": {
      "method:kf6qfg:registerasync": "method_kf6qfg_registerasync__fragment_diagram",
      "method:b6asoe:loginasync": "method_b6asoe_loginasync__fragment_diagram",
      "method:1i33wis:logoutasync": "method_1i33wis_logoutasync__fragment_diagram",
      "method:1u6514u:getprofileasync": "method_1u6514u_getprofileasync__fragment_diagram",
      "method:nyrl9z:getprofileinternalasync": "method_nyrl9z_getprofileinternalasync__fragment_diagram",
      "method:nb75z9:refreshtokenasync": "method_nb75z9_refreshtokenasync__fragment_diagram"
    }
  }
}