vsphere/internal/helper/viapi/vim_helper.go
func isConcurrentAccessError(err error) bool {
	// ConcurrentAccess comes from a task more than it usually does from a direct
	// SOAP call, so we need to handle both here.
	var f types.AnyType
	var ok bool
	f, ok = vimSoapFault(err)
	if !ok {
		f, ok = taskFault(err)
	}
	if ok {
		switch f.(type) {
		case types.ConcurrentAccess, *types.ConcurrentAccess:
			return true
		}
	}
	return false
}
func isConcurrentAccessError(err error) bool {
	// ConcurrentAccess comes from a task more than it usually does from a direct
	// SOAP call, so we need to handle both here.
	var f types.AnyType
	var ok bool
	f, ok = vimSoapFault(err)
	if !ok {
		f, ok = taskFault(err)
	}
	if ok {
		switch f.(type) {
		case types.ConcurrentAccess, *types.ConcurrentAccess:
			return true
		}
	}
	return false
}
// isConcurrentAccessError checks an error to see if it's of the
// ConcurrentAccess type.