// Copyright (c) Tailscale Inc & contributors
// SPDX-License-Identifier: BSD-3-Clause

// Code generated by tailscale.com/cmd/cloner; DO NOT EDIT.

package persist

import (
	"tailscale.com/tailcfg"
	"tailscale.com/types/key"
	"tailscale.com/types/structs"
)

// Clone makes a deep copy of Persist.
// The result aliases no memory with the original.
func (src *Persist) Clone() *Persist {
	if src == nil {
		return nil
	}
	dst := new(Persist)
	*dst = *src
	dst.UserProfile = *src.UserProfile.Clone()
	if src.AttestationKey != nil {
		dst.AttestationKey = src.AttestationKey.Clone()
	}
	dst.DisallowedTKAStateIDs = append(src.DisallowedTKAStateIDs[:0:0], src.DisallowedTKAStateIDs...)
	return dst
}

// A compilation failure here means this code must be regenerated, with the command at the top of this file.
var _PersistCloneNeedsRegeneration = Persist(struct {
	_                     structs.Incomparable
	PrivateNodeKey        key.NodePrivate
	OldPrivateNodeKey     key.NodePrivate
	UserProfile           tailcfg.UserProfile
	NetworkLockKey        key.NLPrivate
	NodeID                tailcfg.StableNodeID
	AttestationKey        key.HardwareAttestationKey
	DisallowedTKAStateIDs []string
}{})
