func currentFuncName() string {
	current := make([]uintptr, 1)
	if level := runtime.Callers(2, current); level == 0 {
		return ""
	}
	caller := runtime.FuncForPC(current[0] - 1)
	if caller == nil {
		return ""
	}
	sysFuncName := caller.Name()
	return partitionByDelimiterAtIndex(sysFuncName, ".", -1)
}
currentFuncName returns the name of the caller function as a string
for func Foo() { x := currentFuncName() }, x == "Foo"
package epsagonmongo
import (
	"context"
	"encoding/json"
	"fmt"
	"github.com/epsagon/epsagon-go/epsagon"
	"github.com/epsagon/epsagon-go/protocol"
	"github.com/epsagon/epsagon-go/tracer"
	"github.com/google/uuid"
	"go.mongodb.org/mongo-driver/mongo"
	"strconv"
	"reflect"
	"runtime"
	"strings"
)