setFrom(input, {prereleasePrefix = ''} = {}) {
		this.#prereleasePrefix ??= prereleasePrefix;
		const previousVersion = this.toString();

		if (isSemVersionIncrement(input)) {
			this.#version.inc(input, this.#prereleasePrefix);
		} else {
			if (isInvalidSemVersion(input)) {
				throw new Error(`New version ${input} should either be one of ${SEMVER_INCREMENTS_LIST}, or a valid SemVer version.`);
			}

			if (this.#isGreaterThanOrEqualTo(input)) {
				throw new Error(`New version ${input} should be higher than current version ${this.toString()}.`);
			}

			this.#trySetVersion(input);
		}

		// Set `this.#diff` to format version diffs
		this.#diff = semver.diff(previousVersion, this.#version);
		return this;
	}
Sets a new version based on `input`. If `input` is a valid `SemVer` increment, the current version will be incremented by that amount. If `input` is a valid `SemVer` version, the current version will be set to `input` if it is greater than the current version.

	@param {string | SemVerIncrement} input - A new valid `SemVer` version or a `SemVer` increment to increase the current version by.
	@param {object} [options]
	@param {string} [options.prereleasePrefix] - A prefix to use for `prerelease` versions.
	@throws If `input` is not a valid `SemVer` version or increment, or if `input` is a valid `SemVer` version but is not greater than the current version.