public override RawResult Run(string cypher, Dictionary <string, object?>?parameters, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
        {
            if (StatementRunner is null)
            {
                throw new InvalidOperationException("The current transaction was already committed or rolled back.");
            }

#if DEBUG
            Logger?.Start();
#endif
            neo4j.IStatementResult results = StatementRunner.Run(cypher, parameters);

#if DEBUG
            if (Logger != null)
            {
                results.Peek();
                Logger.Stop(cypher, parameters: parameters, callerInfo: new List <string>()
                {
                    memberName, sourceFilePath, sourceLineNumber.ToString()
                });
            }
#endif

            return(new Neo4jRawResult(results));
        }
        public override RawResult Run(string cypher, [CallerMemberName] string memberName = "", [CallerFilePath] string sourceFilePath = "", [CallerLineNumber] int sourceLineNumber = 0)
        {
            if (StatementRunner is null)
            {
                throw new InvalidOperationException("The current transaction was already committed or rolled back.");
            }

#if DEBUG
            Logger?.Start();
#endif
            Task <neo4j.IResultCursor> results = StatementRunner.RunAsync(cypher);

#if DEBUG
            if (Logger is not null)
            {
                results.GetTaskResult().PeekAsync().Wait();
                Logger.Stop(cypher, callerInfo: new List <string>()
                {
                    memberName, sourceFilePath, sourceLineNumber.ToString()
                });
            }
#endif

            return(new Neo4jRawResult(results));
        }