### Question:
StepAnalyzerProvider extends BaseKettleMetaverseComponent implements IStepAnalyzerProvider { @Override public void removeAnalyzer( IStepAnalyzer analyzer ) { if ( analyzer != null ) { if ( stepAnalyzers != null && stepAnalyzers.contains( analyzer ) ) { try { stepAnalyzers.remove( analyzer ); } catch ( UnsupportedOperationException e ) { } } Set<Class<? extends BaseStepMeta>> types = analyzer.getSupportedSteps(); if ( types != null ) { for ( Class<? extends BaseStepMeta> type : types ) { Set<IStepAnalyzer> analyzerSet; if ( analyzerTypeMap.containsKey( type ) ) { analyzerSet = analyzerTypeMap.get( type ); analyzerSet.remove( analyzer ); if ( analyzerSet.size() == 0 ) { analyzerTypeMap.remove( type ); } } } } } }  @Override List<IStepAnalyzer> getAnalyzers(); @Override List<IStepAnalyzer> getAnalyzers( Collection<Class<?>> types ); void setStepAnalyzers( List<IStepAnalyzer> analyzers ); void setClonableStepAnalyzers( List<IStepAnalyzer> analyzers ); @Override void addAnalyzer( IStepAnalyzer analyzer ); void addClonableAnalyzer( IClonableStepAnalyzer analyzer ); @Override void removeAnalyzer( IStepAnalyzer analyzer ); void removeClonableAnalyzer( IClonableStepAnalyzer analyzer );  }### Answer:
@Test public void testRemoveAnalyzer() throws Exception { IStepAnalyzer baseStepAnalyzer = mock( IStepAnalyzer.class ); when( baseStepAnalyzer.getSupportedSteps() ).thenReturn( Sets.newSet( BaseStepMeta.class ) ); IStepAnalyzer tableOutputStepAnalyzer = mock( IStepAnalyzer.class ); when( tableOutputStepAnalyzer.getSupportedSteps() ).thenReturn( Sets.newSet( TableOutputMeta.class ) ); provider.setStepAnalyzers( Lists.newArrayList( baseStepAnalyzer, tableOutputStepAnalyzer ) ); Set<IStepAnalyzer> tableOutputStepAnalyzers = provider.analyzerTypeMap.get( TableOutputMeta.class ); assertNotNull( tableOutputStepAnalyzers ); assertEquals( tableOutputStepAnalyzers.size(), 1 ); provider.removeAnalyzer( tableOutputStepAnalyzer ); tableOutputStepAnalyzers = provider.analyzerTypeMap.get( TableOutputMeta.class ); assertNull( tableOutputStepAnalyzers ); }