The new NotImplemented macro uses __PRETTY_FUNCTION__ for GNU compatible compilers otherwise __func__ to provide the function name string.
and two-phase functionality separated from multiphase functionality