@Override
  @Contract("false -> null")
  public ValuesExtractionResult apply(boolean retPrevValue) {
    if (retPrevValue) {
      final ArrayList<Value> orig = new ArrayList<>();
      for (Value value : myValues) {
        final Value old = value.write(true);
        if (old != null) {
          orig.add(old);
        }
      }
      return new Gens(orig);
    }

    for (Value value : myValues) {
      value.write(false);
    }
    return null;
  }
@Override
  @Contract("false -> null")
  public ValuesExtractionResult apply(boolean retPrevValue)