### Question:
MergeJoinStepAnalyzer extends StepAnalyzer<MergeJoinMeta> { @Override protected boolean isPassthrough( StepField originalField ) { List<IMetaverseNode> inputFieldNamesMatching = getInputs().findNodes( originalField.getFieldName() ); String[] prevStepNames = parentTransMeta.getPrevStepNames( getStepName() ); boolean isRightSideOfJoin = originalField.getStepName().equals( prevStepNames[ 1 ] ); boolean isBothSidesOfJoin = inputFieldNamesMatching.size() > 1; if ( !isRightSideOfJoin ) { return true; } else if ( isRightSideOfJoin && !isBothSidesOfJoin ) { return true; } return false; }  @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 testIsPassthrough_leftSideField() throws Exception { StepField passthroughField = new StepField( "leftStep", "value" ); assertTrue( analyzer.isPassthrough( passthroughField ) ); }
@Test public void testIsPassthrough_rightSideField() throws Exception { StepField passthroughField = new StepField( "rightStep", "ST" ); assertTrue( analyzer.isPassthrough( passthroughField ) ); }
@Test public void testIsPassthrough_rightSideFieldRenamed() throws Exception { StepField passthroughField = new StepField( "rightStep", "value" ); assertFalse( analyzer.isPassthrough( passthroughField ) ); }