@Test
  public void shouldAddNonExistingValue() {
    // given
    stringCounter.addString(STRING);

    // when
    int result = stringCounter.getCounterFor(STRING);

    // then
    assertThat(result, is(1));
  }
        public Object invoke(
            ModuleInstance module,
            Object source,
            Object[] args,
            QvtOperationalEvaluationEnv evalEnv) {
          String self = (String) source;
          StringCounter counters = StringCounter.getInstance(evalEnv);
          Integer currentValue = counters.value(self);

          if (currentValue == null) {
            counters.start(self);
            return self;
          }

          counters.increment(self);
          return self + currentValue.toString();
        }
 public Object invoke(
     ModuleInstance module,
     Object source,
     Object[] args,
     QvtOperationalEvaluationEnv evalEnv) {
   StringCounter.getInstance(evalEnv).restartAll();
   return null;
 }
        public Object invoke(
            ModuleInstance module,
            Object source,
            Object[] args,
            QvtOperationalEvaluationEnv evalEnv) {
          Object leftVal = args[0];
          if (leftVal == null && leftVal == CallHandlerAdapter.getInvalidResult(evalEnv)) {
            return false;
          }

          String counterName = (String) leftVal;
          return StringCounter.getInstance(evalEnv).increment(counterName);
        }
 @Override
 public void finish() {
   assertThat(stringCounter.getCounterFor(someString), is(5));
 }
 public void thread5() {
   stringCounter.addString(someString);
 }