code: func (c *TrustedClusterV2) CanChangeStateTo(t TrustedCluster) error {
  	if c.GetToken() != t.GetToken() {
  		return trace.BadParameter("can not update token for existing trusted cluster")
  	}
  	if c.GetProxyAddress() != t.GetProxyAddress() {
  		return trace.BadParameter("can not update proxy address for existing trusted cluster")
  	}
  	if c.GetReverseTunnelAddress() != t.GetReverseTunnelAddress() {
  		return trace.BadParameter("can not update proxy address for existing trusted cluster")
  	}
  	if !utils.StringSlicesEqual(c.GetRoles(), t.GetRoles()) {
  		return trace.BadParameter("can not update roles for existing trusted cluster")
  	}
  	if !c.GetRoleMap().Equals(t.GetRoleMap()) {
  		return trace.BadParameter("can not update role map for existing trusted cluster")
  	}
  
  	if c.GetEnabled() == t.GetEnabled() {
  		if t.GetEnabled() == true {
  			return trace.AlreadyExists("trusted cluster is already enabled")
  		}
  		return trace.AlreadyExists("trusted cluster state is already disabled")
  	}
  
  	return nil
  }
docs: // CanChangeState checks if the state change is allowed or not. If not, returns
  // an error explaining the reason.