public List<?> distinct(String field) throws Exception {
    assert skip == 0;
    assert limit == 0;
    assert select == null;

    Type toto = store.type.getField(field).getGenericType();
    Class<?> to = store.type.getField(field).getType();
    if (to.isArray()) {
      toto = to.getComponentType();
    } else if (Collection.class.isAssignableFrom(to) && toto instanceof ParameterizedType) {
      toto = ((ParameterizedType) toto).getActualTypeArguments()[0];
    } else if (GenericArrayType.class.isAssignableFrom(to)) {
      toto = ((GenericArrayType) toto).getGenericComponentType();
    }

    List<?> list;

    // Do we have a sub selection? Then use the filter
    // otherwise use the call without where clause
    if (where == null) list = store.collection.distinct(field);
    else list = store.collection.distinct(field, where);

    List<Object> result = new ArrayList<Object>(list.size());
    for (Object o : list) {
      result.add(converter.convert(toto, o));
    }
    return result;
  }
  /** We parse the -runremote and create sessions for each one of them */
  @Override
  public void prepare() throws Exception {
    if (prepared) return;

    prepared = true;

    updateFromProject();

    Map<String, Object> properties = new HashMap<String, Object>(getRunProperties());

    calculatedProperties(properties);

    Collection<String> embeddedActivators = getActivators();
    if (embeddedActivators != null && !embeddedActivators.isEmpty()) {
      properties.put("biz.aQute.remote.embedded", Strings.join(embeddedActivators));
    }

    for (Entry<String, Attrs> entry : runremote.entrySet()) {
      RunRemoteDTO dto = converter.convert(RunRemoteDTO.class, entry.getValue());
      dto.name = entry.getKey();

      Map<String, Object> sessionProperties = new HashMap<String, Object>(properties);
      sessionProperties.putAll(entry.getValue());
      sessionProperties.put("session.name", dto.name);

      if (dto.jmx != null) {
        tryJMXDeploy(dto.jmx, "biz.aQute.remote.agent");
      }

      RunSessionImpl session = new RunSessionImpl(this, dto, properties);
      sessions.add(session);
    }
  }