public static Set<TargetStepAttribute> getUnavailableTargetSteps( Map<TargetStepAttribute, SourceStepField> targetMap,
                                                                    TransMeta injectedTransMeta ) {
    Set<String> usedStepNames = getUsedStepsForReferencendTransformation( injectedTransMeta );
    Set<TargetStepAttribute> unavailableTargetSteps = new HashSet<TargetStepAttribute>();
    for ( TargetStepAttribute currentTarget : targetMap.keySet() ) {
      if ( !usedStepNames.contains( currentTarget.getStepname().toUpperCase() ) ) {
        unavailableTargetSteps.add( currentTarget );
      }
    }
    return Collections.unmodifiableSet( unavailableTargetSteps );
  }
@Test
  public void getUnavailableTargetSteps() {
    TargetStepAttribute unavailableTargetStep = new TargetStepAttribute( UNAVAILABLE_STEP, TEST_ATTR_VALUE, false );
    SourceStepField sourceStep = new SourceStepField( TEST_SOURCE_STEP_NAME, TEST_FIELD );
    Map<TargetStepAttribute, SourceStepField> targetMap = Collections.singletonMap( unavailableTargetStep, sourceStep );
    TransMeta injectedTransMeta = mock( TransMeta.class );
    doReturn( Collections.emptyList() ).when( injectedTransMeta ).getUsedSteps();

    Set<TargetStepAttribute> actualSet = MetaInject.getUnavailableTargetSteps( targetMap, injectedTransMeta );
    assertTrue( actualSet.contains( unavailableTargetStep ) );
  }