### Question:
MergeJoinStepAnalyzer extends StepAnalyzer<MergeJoinMeta> { @Override public Set<ComponentDerivationRecord> getChangeRecords( MergeJoinMeta meta ) throws MetaverseAnalyzerException { Set<ComponentDerivationRecord> changeRecords = new HashSet<>(); String[] prevStepNames = parentTransMeta.getPrevStepNames( getStepName() ); if ( getOutputs() != null ) { Set<StepField> outputFields = getOutputs().getFieldNames(); for ( StepField outputField : outputFields ) { if ( outputField.getFieldName().matches( ".*_\\d*$" ) ) { String unsuffixName = outputField.getFieldName().replaceAll( "_\\d*$", "" ); StepField rightSideInputField = new StepField( prevStepNames[ 1 ], unsuffixName ); if ( !isPassthrough( rightSideInputField ) ) { ComponentDerivationRecord renameFieldRecord = new ComponentDerivationRecord( rightSideInputField, outputField, ChangeType.METADATA ); renameFieldRecord.addOperation( Operation.getRenameOperation() ); changeRecords.add( renameFieldRecord ); } } } } return changeRecords; }  @Override Set<ComponentDerivationRecord> getChangeRecords( MergeJoinMeta meta ); @Override Map<String, RowMetaInterface> getInputFields( MergeJoinMeta meta ); @Override Set<Class<? extends BaseStepMeta>> getSupportedSteps(); @Override IClonableStepAnalyzer newInstance();  }### Answer:
@Test public void testGetChangeRecords() throws Exception { Set<ComponentDerivationRecord> changeRecords = analyzer.getChangeRecords( mergeJoinMeta ); assertNotNull( changeRecords ); assertEquals( 1, changeRecords.size() ); ComponentDerivationRecord cr = changeRecords.iterator().next(); assertEquals( ChangeType.METADATA, cr.getChangeType() ); assertEquals( 1, cr.getOperations().size() ); }