@Override
  public String toString() {
    Object effectsPresentation = effects.isEmpty() ? "Pure" : effects.size() == 1 ? effects.iterator().next() : effects.size();
    return "Effects[" + effectsPresentation + "|" + returnValue + "]";
  }
@Override
  public String toString()