// [overriden, entry point]
  void
    TraverseTUnitConsumer::HandleTranslationUnit(ASTContext& context)
    {
      (terrs().magenta() << "TraverseTUnitConsumer::HandleTranslationUnit() [BEGIN]\n")
        .reset()
        .indent();

      terrs() << "` getASTAllocatedMemory() -> "
              << context.getASTAllocatedMemory() << "\n";
      terrs() << "` getSideTableAllocatedMemory() -> "
              << context.getSideTableAllocatedMemory() << "\n";

      try {
        PimplIOVisitor visitor( context );

        clang::TranslationUnitDecl *TU = context.getTranslationUnitDecl();

        // if (false)
        //  InvestigateASTContextTypes( context );

        (terrs().white() << "~  ~  ~  X  ~  ~  ~\n").reset();

        visitor.TraverseDecl( TU );

        auto& map = visitor.getRepository().getArtifactsMap();

        ((((terrs().blue() << "~~> Artifacts repository has ")
          .white() << map.size() << " elements.")
          .blue()  << " Estimated memory size: ")
          .white().bold() << map.getMemorySize() << " Bytes\n")
          .reset();
      }
      catch(const std::exception &ex) {
        (((terrs().lf().pad().red().bold().reverse() << "ERROR: ")
          .red().bold() << "Ouch! Caught some exception: ")
          .red() << ex.what() << "\n\n")
          .reset();
      }

      (terrs(-1)
        .unindent().pad()
        .magenta() << "TraverseTUnitConsumer::HandleTranslationUnit() [END]\n")
        .reset();
    }