clock = $clock ?? ClockFactory::getDefault(); $this->initialStartTime = $initialStartTime; } public static function create(?ClockInterface $clock = null, ?int $initialStartTime = null): self { return new self($clock, $initialStartTime); } public static function fromClockFactory(ClockFactoryInterface $factory, ?int $initialStartTime = null): self { return self::create($factory->build(), $initialStartTime); } public function build(): StopWatch { return new StopWatch($this->clock, $this->initialStartTime); } public static function getDefault(): StopWatchInterface { return self::$default ?? self::$default = self::create()->build(); } public static function setDefault(?StopWatchInterface $default): void { self::$default = $default; } }