public override VersionUriList GetItemVersions(ItemDefinition itemDefinition, CallContext context)
        {
#if DEBUG
            var timer = Stopwatch.StartNew();
#endif
            var headList = HeadProvider.GetItemVersions(itemDefinition, context);

            if (headList != null && headList.Count > 0)
            {
                return(headList);
            }

            var itemVersions = ReadOnlyProviders.Select(provider => provider.GetItemVersions(itemDefinition))
                               .FirstOrDefault(list => list != null && list.Count > 0);

#if DEBUG
            this.Trace(itemVersions, timer, itemDefinition, context);
#endif

            return
                (itemVersions ?? new VersionUriList());
        }