Code not using `ToolHandle` but `tool<ISomeToolInterface>(...)`

There is another category of the problem outlined in #557 (closed): code that avoids ToolHandle altogether, and which uses the told tool<ISomeToolInterface>(...) method. These entirely fall outside of the framework's awareness of tools, and they can not only be initialized at 'any' time, they also do not participate in the data dependency discovery...

in Rec, this pertains to the following bits of code:

CaloFuture/CaloFutureReco/src/SubClusterSelectorTool.cpp:        Interfaces::ISubClusterTag* tE = tool<Interfaces::ISubClusterTag>( taggerE, areaName + "EnergyTagger", this );
CaloFuture/CaloFutureReco/src/SubClusterSelectorTool.cpp:              tool<Interfaces::ISubClusterTag>( taggerE, id.areaName() + "EnergyTagger", this );
CaloFuture/CaloFutureReco/src/SubClusterSelectorTool.cpp:        Interfaces::ISubClusterTag* tP = tool<Interfaces::ISubClusterTag>( taggerP, areaName + "PositionTagger", this );
CaloFuture/CaloFutureReco/src/SubClusterSelectorTool.cpp:              tool<Interfaces::ISubClusterTag>( taggerP, id.areaName() + "PositionTagger", this );
MicroDST/MicroDSTAlgorithm/src/CopyProtoParticle2MCRelations.cpp:        m_cloner = tool<ICloneMCParticle>( m_clonerType, this );
MicroDST/MicroDSTAlgorithm/src/MCParticleCloner.cpp:        ( m_vertexClonerName.value() == "NONE" ? nullptr : tool<ICloneMCVertex>( m_vertexClonerName, parent() ) );
MicroDST/MicroDSTAlgorithm/src/MCVertexCloner.cpp:        [&] { m_particleCloner = tool<ICloneMCParticle>( m_particleClonerName, this->parent() ); } );
Phys/DaVinciMCTools/src/Particle2BackgroundCategoryRelationsAlg.cpp:    m_bkg = tool<IBackgroundCategory>( "BackgroundCategory", this );
Phys/DaVinciPVTools/src/GenericParticle2PVRelator.h:    if ( sc.isSuccess() ) { m_distCalculator = tool<IDistanceCalculator>( DistCalcName::value, this ); }
Phys/DaVinciTransporter/src/ParticleTransporter.cpp:    m_trackExtrapolator = tool<ITrackExtrapolator>( m_trackExtrapolatorName, this );
Phys/DaVinciTransporter/src/ParticleTransporter.cpp:  m_particle2State = tool<IParticle2State>( "Particle2State" ); // not private
Phys/DaVinciTransporter/src/ParticleTransporterWithStateProvider.cpp:  m_stateprovider  = tool<ITrackStateProvider>( m_stateprovidername, this );
Phys/DaVinciTransporter/src/ParticleTransporterWithStateProvider.cpp:  m_particle2state = tool<IParticle2State>( m_particle2statename, this );
Phys/DaVinciTransporter/src/ParticleTransporterWithStateProvider.cpp:  m_extrapolator1  = tool<ITrackExtrapolator>( m_extrapolator1name, this );
Phys/DaVinciTransporter/src/ParticleTransporterWithStateProvider.cpp:  if ( !m_extrapolator2name.empty() ) { m_extrapolator2 = tool<ITrackExtrapolator>( m_extrapolator2name, this ); }
Phys/LoKiArrayFunctors/include/LoKi/DictTransform.h:        m_source = tool<IParticleDictTool>( m_sourcename, this );
Phys/LoKiArrayFunctors/src/Components/DictOfFunctors.cpp:        IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/HybridFilterCriterion.cpp:  IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/HybridFilterParticles.cpp:  IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/HybridParticleArrayFilter.cpp:  IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/PlotTool.cpp:  IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/PlotTool.cpp:  IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiArrayFunctors/src/Components/PrintTool.cpp:  IHybridFactory* factory = tool<IHybridFactory>( m_factory, this );
Phys/LoKiFitters/src/DecayTreeFit.cpp:      m_extrapolator = tool<ITrackStateProvider>( m_extrapolatorName );
Phys/LoKiFitters/src/DirectionFitBase.h:      if ( 0 == m_transporter ) { m_transporter = tool<IParticleTransporter>( m_transporterName ); }
Phys/LoKiFitters/src/DirectionFitBase.h:      if ( 0 == m_transporter ) { m_transporter = tool<IParticleTransporter>( m_transporterName ); }
Phys/LoKiFitters/src/PVReFitter.cpp:  if ( !m_stateProviderName.empty() ) { m_stateProvider = tool<ITrackStateProvider>( m_stateProviderName, this ); }
Phys/LoKiFitters/src/PVReFitter.cpp:  if ( !m_extrapolatorName.empty() ) { m_extrapolator = tool<ITrackExtrapolator>( m_extrapolatorName, this ); }
Phys/LoKiFitters/src/PVReFitter.cpp:    m_veloExtrapolator = tool<ITrackExtrapolator>( m_veloExtrapolatorName, this );
Phys/LoKiFitters/src/ParticleClassificator.cpp:    Decays::IDecay* decay = tool<Decays::IDecay>( "LoKi::Decay/Decays" );
Phys/LoKiFitters/src/ParticleClassificator.cpp:    Decays::IDecay* decay = tool<Decays::IDecay>( "LoKi::Decay/Decays" );
Phys/LoKiFitters/src/ParticleClassificator.cpp:    Decays::IDecay* decay = tool<Decays::IDecay>( "LoKi::Decay/Decays" );
Phys/LoKiFitters/src/SmartParticleCombiner.cpp:      m_adder = tool<IParticleCombiner>( m_adderName, this );
Phys/LoKiFitters/src/SmartParticleCombiner.cpp:      m_fitter = tool<IParticleCombiner>( m_fitterName, this );
Phys/LoKiFitters/src/VertexFitter.h:      m_transporter = tool<IParticleTransporter>( m_transporterName, this );
Phys/LoKiPhys/src/Particles15.cpp:    m_filter = alg->tool<IParticleFilter>( filter, alg, true );
Phys/LoKiPhys/src/Particles44.cpp:    m_function = alg->tool<IParticleValue>( function, alg, true );
Phys/LoKiPhys/src/Particles47.cpp:          alg->tool<ANNGlobalPID::IChargedProtoANNPIDTool>( m_toolname, alg );
Phys/LoKiPhysMC/src/Components/MCTruthPhoton.cpp:  IMCHybridFactory* factory = tool<IMCHybridFactory>( m_factory, this );
Phys/LoKiPhysMC/src/Components/PV2MC.cpp:  if ( !m_mc2col ) { m_mc2col = tool<IMC2Collision>( m_mc2colName, this ); }
Phys/LoKiPhysMC/src/Components/PV2MCAlg.cpp:      m_pv2mc = tool<IPV2MC>( m_pv2mcName, this );
Phys/LoKiUtils/src/GetTools.cpp:    const IDistanceCalculator* geo = alg->tool<IDistanceCalculator>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp:    const ILifetimeFitter* geo = alg->tool<ILifetimeFitter>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp:    IParticleTransporter* transporter = alg->tool<IParticleTransporter>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp:    const IParticleReFitter* geo = alg->tool<IParticleReFitter>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp:    const IMassFit* geo = alg->tool<IMassFit>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp:    const IDirectionFit* geo = alg->tool<IDirectionFit>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp:    const IVertexFit* geo = alg->tool<IVertexFit>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp:    const IProtoParticleFilter* geo = alg->tool<IProtoParticleFilter>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp:    const IParticleFilter* geo = alg->tool<IParticleFilter>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp:    IDecayTreeFit* geo = alg->tool<IDecayTreeFit>( nick, alg );
Phys/LoKiUtils/src/GetTools.cpp:  return alg->tool<ITrackSelector>( nick, alg ); // RETURN
Phys/LoKiUtils/src/GetTools.cpp:  return alg->tool<ITriggerTisTos>( nick, alg ); // RETURN
Phys/MCAssociation/src/MCMatchObjP2MCRelator.cpp:  m_reporter = tool<LoKi::IReporter>( "LoKi::Reporter", this );
Phys/ProtoParticleFilter/src/ChargedProtoParticleDLLFilter.cpp:  m_trSel = tool<ITrackSelector>( "TrackSelector", "TrackSelector", this );
Phys/VertexFit/src/AdaptivePVReFitter.cpp:  m_fullExtrapolator = tool<ITrackExtrapolator>( m_fullExtrapolatorName );
Phys/VertexFit/src/AdaptivePVReFitter.cpp:  m_veloExtrapolator = tool<ITrackExtrapolator>( m_veloExtrapolatorName );
Phys/VertexFit/src/MomentumCombiner.cpp:    if ( !m_transporterName.empty() ) { m_transporter = tool<IParticleTransporter>( m_transporterName, this ); }
Phys/VertexFit/src/OfflineVertexFitter.cpp:  m_transporter = tool<IParticleTransporter>( m_transporterName, this );
Phys/VertexFit/src/PVReFitter.cpp:  m_fullExtrapolator = tool<ITrackExtrapolator>( m_fullExtrapolatorName );
Phys/VertexFit/src/PVReFitter.cpp:  m_veloExtrapolator = tool<ITrackExtrapolator>( m_veloExtrapolatorName );
Phys/VertexFit/src/PVTrackRemover.cpp:  m_pvTool = tool<IPVOfflineTool>( m_pvToolType );
Tr/TrackCheckers/src/TrackResChecker.cpp:  IHistoTool*     htool  = tool<IHistoTool>( "HistoTool", name, this );
Tr/TrackMCTools/src/TrackGhostClassificationBase.cpp:  m_linkTool = tool<ILHCbIDsToMCParticles>( "LHCbIDsToMCParticles" );
Tr/TrackProjectors/src/TrackProjector.cpp:  return GaudiTool::initialize().andThen( [&] { m_poca = tool<ITrajPoca>( "TrajPoca" ); } );
Tr/TrackProjectors/src/TrackProjectorSelector.cpp:                   [&]( const auto& i ) { m_projectors.insert( i.first, this->tool<ITrackProjector>( i.second ) ); } );
Tr/TrackTools/src/DelegatingTrackSelector.cpp:      return trSels[t] = tool<ITrackSelector>( "TrackSelector", name.str(), this );