@Override public void doRunKeys(int run) throws Exception {
  Object[] template=determineTemplate(run);
  String[] newKey=new String[template.length - 1];
  System.arraycopy(template,0,newKey,0,m_KeyIndex);
  System.arraycopy(template,m_KeyIndex + 1,newKey,m_KeyIndex,template.length - m_KeyIndex - 1);
  m_ResultListener.acceptResult(this,newKey,null);
}

@ Override public void doRunKeys ( int run ) throws Exception { Object [ ] template = determineTemplate ( run ) ; String [ ] newKey = new String [ template . length - 1 ] ; System . arraycopy ( template , 0 , newKey , 0 , m_KeyIndex ) ; System . arraycopy ( template , m_KeyIndex + 1 , newKey , m_KeyIndex , template . length - m_KeyIndex - 1 ) ; m_ResultListener . acceptResult ( this , newKey , null ) ; }
gets the keys for a specified run number . different run numbers correspond to different randomizations of the data . keys produced should be sent to the current resultlistener
