def METHOD_NAME(config: ConfigUpdater, opts: ScaffoldOpts) -> ConfigUpdater:
    """Add PyScaffold section to a ``setup.cfg``-like file + PyScaffold's version +
    extensions and their associated options.
    """
    if "pyscaffold" not in config:
        config.add_section("pyscaffold")
    pyscaffold = config["pyscaffold"]
    pyscaffold["version"] = pyscaffold_version
    # Add the new extensions alongside the existing ones
    extensions = {ext.name for ext in opts.get("extensions", []) if ext.persist}
    old = cast(str, pyscaffold.get("extensions", Object(value="")).value)
    new = list(sorted(parse_extensions(old) | extensions))
    if new:
        pyscaffold.set("extensions")
        pyscaffold["extensions"].set_values(new)
    # Add extension-related opts, i.e. opts which start with an extension name
    allowed = ((k, v) for k, v in opts.items() if any(map(k.startswith, extensions)))
    allowed_ = {k: "" if v is None else v for k, v in allowed}
    # ^  TODO: remove workaround for None values once ConfigUpdater solves #68
    pyscaffold.update(allowed_)
    return config