Readd *RefPrivate.hpp (Got removed in the merge)
ReferenceType and ReferenceKind
Reference casting
Use Reference Object factory