@Override
  public ValueSource parse(FunctionQParser fp) throws SyntaxError {
    String key = fp.parseArg();
    double val = fp.parseDouble();

    AtomicInteger counter = new AtomicInteger();
    if (null != counters.putIfAbsent(key, counter)) {
      throw new IllegalArgumentException("Key has already been used: " + key);
    }
    return new CountDocsValueSource(counter, val);
  }