What is TObject
===============

It is a std::variant that can be (not in that order)

- Undefined (Tesses::CrossLang::Undefined)
- Null (std::nullptr_t)
- Long (int64_t)
- Double (double)
- Char (char)
- String (std::string)
- Version (Tesses::CrossLang::TVMVersion)
- Regex (std::regex)
- Path (Tesses::Framework::Filesystem::VFSPath)
- MethodInvoker (Tesses::CrossLang::MethodInvoker)
- HeapObjects (Tesses::CrossLang::THeapObjectHolder)