https://blog.bkryza.com/posts/alternative-adl-serialization-functions-with-nlohmann-json/