### Question:
AnnotationDrivenJobAnalyzer extends JobEntryAnalyzer<JobEntryInterface> { @Override protected void customAnalyze( JobEntryInterface entry, IMetaverseNode rootNode ) throws MetaverseAnalyzerException { List<BaseStepMeta> baseStepMetas = Arrays.stream( entry.getClass().getMethods() ) .filter( m -> m.isAnnotationPresent( Metaverse.InternalStepMeta.class ) ) .map( method -> getBaseStepMeta( entry, method ) ) .collect( Collectors.toList() ); for ( BaseStepMeta baseStepMeta : baseStepMetas ) { analyzeInternalStepMeta( rootNode, baseStepMeta ); } } AnnotationDrivenJobAnalyzer( JobEntryInterface jobEntry ); @Override Set<Class<? extends JobEntryInterface>> getSupportedEntries();  }### Answer:
@Test public void jobCanReferenceStepMetaForAnalysis() throws MetaverseAnalyzerException { TestJobEntry jobEntry = new TestJobEntry(); AnnotationDrivenJobAnalyzer jobAnalyzer = new AnnotationDrivenJobAnalyzer( jobEntry ) { @Override AnnotationDrivenStepMetaAnalyzer createStepAnalyzer( BaseStepMeta baseStepMeta ) { return stepAnalyzer; } }; jobAnalyzer.setMetaverseBuilder( new BaseMetaverseBuilder( new TinkerGraph() ) ); jobAnalyzer.analyze( new MetaverseComponentDescriptor( "root", "job", new Namespace( "names" ) ), jobEntry ); Mockito.verify( stepAnalyzer ).customAnalyze( any( TestStepMeta.class ), any( MetaverseTransientNode.class ) ); }