@Override
  public void setValueMetaList( List<ValueMetaInterface> valueMetaList ) {
    lock.writeLock().lock();
    try {
      this.valueMetaList = valueMetaList;
      this.cache.invalidate();
      for ( int i = 0, len = valueMetaList.size(); i < len; i++ ) {
        ValueMetaInterface valueMeta = valueMetaList.get( i );
        cache.storeMapping( valueMeta.getName(), i );
      }
      this.needRealClone = null;
    } finally {
      lock.writeLock().unlock();
    }
  }
@Test
  public void testSetValueMetaList() throws KettlePluginException {
    List<ValueMetaInterface> setList = this.generateVList( new String[] { "alpha", "bravo" }, new int[] { 2, 2 } );
    rowMeta.setValueMetaList( setList );
    assertTrue( setList.contains( rowMeta.searchValueMeta( "alpha" ) ) );
    assertTrue( setList.contains( rowMeta.searchValueMeta( "bravo" ) ) );

    // check that it is avalable by index:
    assertEquals( 0, rowMeta.indexOfValue( "alpha" ) );
    assertEquals( 1, rowMeta.indexOfValue( "bravo" ) );
  }