code: public static <T> StaticValue<T> mutateStaticValue(StaticValue<T> staticValue, Callable<T> initializer) {
          if (multiplex) {
              // Multiplexing case; must check for existing StaticValue
              if (staticValue == null) {
                  // no existing value; create new one with no constructor initializer
                  staticValue = StaticValue.createStaticValue(null);
              }
              // initialize this thread only with the initializer
              staticValue.initialize(getThreadGroup(), initializer);
              return staticValue;
          }
          // Final singleton case; just create a new StaticValue
          return StaticValue.createStaticValue(initializer);
      }
docs: Mutates a static value.  Note that if not multiplexing then this method returns a
  new StaticValue object with the value as obtained by the initializer.
  @param staticValue the mutated static value using the specified initializer
  @param initializer the initializer to use to get the new value for the static value
  @return the static value.  This may be a new static value or the one passed in depending on
  if the static value can be mutated.