protected Instance historyInput(Instance instance){
  m_History.push(instance);
  if (m_History.size() <= Math.abs(m_InstanceRange)) {
    if (getFillWithMissing() && (m_InstanceRange < 0)) {
      return mergeInstances(null,instance);
    }
 else {
      return null;
    }
  }
  if (m_InstanceRange < 0) {
    return mergeInstances((Instance)m_History.pop(),instance);
  }
 else {
    return mergeInstances(instance,(Instance)m_History.pop());
  }
}

protected Instance historyInput ( Instance instance ) { m_History . push ( instance ) ; if ( m_History . size ( ) <= Math . abs ( m_InstanceRange ) ) { if ( getFillWithMissing ( ) && ( m_InstanceRange < 0 ) ) { return mergeInstances ( null , instance ) ; } else { return null ; } } if ( m_InstanceRange < 0 ) { return mergeInstances ( ( Instance ) m_History . pop ( ) , instance ) ; } else { return mergeInstances ( instance , ( Instance ) m_History . pop ( ) ) ; } }
adds an instance to the history buffer . if enough instances are in the buffer , a new instance may be output , with selected attribute values copied from one to another .
