@Override
  public RtcQueryAttributeValue[] getChildValues(RtcQueryAttributeValue value)
      throws IllegalArgumentException {
    assert (!EventQueue.isDispatchThread());
    ProcessManager pm = area.getLookup().lookup(ProcessManager.class);
    if (value instanceof DevelopmentLineValueImpl) {
      ArrayList<RtcQueryAttributeValue> chs = new ArrayList<RtcQueryAttributeValue>();
      DevelopmentLine line = ((DevelopmentLineValueImpl) value).getLine();

      for (Iteration impl : pm.getIterations(line)) {
        if (impl instanceof IterationImpl) {
          if (!impl.isArchived()) {
            chs.add(new IterationValueImpl((IterationImpl) impl));
          }
        }
      }
      return chs.toArray(new RtcQueryAttributeValue[] {});
    } else {
      ArrayList<RtcQueryAttributeValue> chs = new ArrayList<RtcQueryAttributeValue>();
      if (value instanceof IterationValueImpl) {
        IterationValueImpl impl = (IterationValueImpl) value;
        for (Iteration it : pm.getIterations(impl.getRtcIteration())) {
          if (it instanceof IterationImpl) {
            if (!it.isArchived()) {
              chs.add(new IterationValueImpl((IterationImpl) it));
            }
          }
        }
        return chs.toArray(new RtcQueryAttributeValue[] {});
      }
    }
    throw new IllegalArgumentException();
  }
 @Override
 public RtcQueryAttributeValue getValueForObject(Object obj) throws IllegalArgumentException {
   if (obj instanceof IIterationHandle) {
     IIterationHandle handle = (IIterationHandle) obj;
     for (DevelopmentLineValueImpl val : getValues()) {
       for (IterationValueImpl iter : getChildValues(val)) {
         if (iter.getRtcIteration()
             .getIIteration()
             .getItemId()
             .getUuidValue()
             .equals(handle.getItemId().getUuidValue())) {
           return iter;
         }
       }
     }
   }
   throw new IllegalArgumentException();
 }