public static CodeSnippetStatement AddInteraction(this CodeStatementCollection statements, string sceneName, string interactionName,
                                                   CodeMethodInvokeExpression method, bool whenCandidate = false)
 {
     if (whenCandidate)
     {
         var snippet = new CodeSnippetStatement(
             $"\t\t\tcase \"{interactionName}\" when Navigation.IsCandidate(request,\"{interactionName}\"):");
         statements.AddBeforeReturn(snippet,
                                    method,
                                    new CodeSnippetExpression("\t\t\tbreak")
                                    );
         return(snippet);
     }
     else
     {
         var snippet = new CodeSnippetStatement($"\t\t\tcase \"{interactionName}\":");
         statements.AddBeforeReturn(
             snippet,
             CodeGeneration_Navigation.NotTrackedSceneNames.SelectMany(s => new[] { s, CodeGeneration_Scene.SceneClassName(s) }).Contains(sceneName) ? null : new CodeMethodInvokeExpression(new CodeTypeReferenceExpression("Navigation"), "ClearCandidates",
                                                                                                                                                                                             CodeConstants.RequestVariableRef),
             method,
             new CodeSnippetExpression("\t\t\tbreak")
             );
         return(snippet);
     }
 }
 private static void AddFallback(CodeStatementCollection newStatements)
 {
     newStatements.AddBeforeReturn(new CodeConditionStatement(
                                       new CodeBinaryOperatorExpression(new CodeVariableReferenceExpression("handled"), CodeBinaryOperatorType.ValueEquality, new CodePrimitiveExpression(false)),
                                       new CodeExpressionStatement(new CodeMethodInvokeExpression(
                                                                       new CodeTypeReferenceExpression("await Output"),
                                                                       "Fallback", new CodeVariableReferenceExpression("request")))));
 }