/// <summary>
        /// Attempts to retrieve all the composite definitions for a composite category by name.
        /// </summary>
        /// <param name="organizationCode">The name of the composite organization code.</param>
        /// <param name="compositeCategoryName">The name of the composite category.</param>
        /// <param name="compositeDefinitions">Upon return, contains the list of composite definitions <see cref="XElement"/>, if found.</param>
        /// <returns><b>true</b> if found; otherwise <b>false</b>.</returns>
        public bool TryGetCompositeDefinitions(
            string organizationCode,
            string compositeCategoryName,
            out IReadOnlyList <XElement> compositeDefinitions)
        {
            compositeDefinitions = null;

            var compositeCategory = new CompositeCategory(organizationCode, compositeCategoryName);

            IEnumerable <Composite> composites;

            if (!_compositesByCompositeCategory.Value.TryGetValue(compositeCategory, out composites))
            {
                return(false);
            }

            compositeDefinitions = composites
                                   .Select(c => c.Definition)
                                   .ToList();

            return(true);
        }
        /// <summary>
        /// Attempts to retrieve a specific composite definition by composite category and name.
        /// </summary>
        /// <param name="organizationCode">A code representing the organization that created the composite definition.</param>
        /// <param name="compositeCategoryName">The name of the composite category.</param>
        /// <param name="compositeName">The name of the composite.</param>
        /// <param name="compositeDefinition">Upon return, contains the composite definition <see cref="XElement"/>, if found.</param>
        /// <returns><b>true</b> if found; otherwise <b>false</b>.</returns>
        public bool TryGetCompositeDefinition(
            string organizationCode,
            string compositeCategoryName,
            string compositeName,
            out XElement compositeDefinition)
        {
            compositeDefinition = null;

            var compositeCategory = new CompositeCategory(organizationCode, compositeCategoryName);

            IEnumerable <Composite> composites;

            if (!_compositesByCompositeCategory.Value.TryGetValue(compositeCategory, out composites))
            {
                return(false);
            }

            compositeDefinition = composites
                                  ?.FirstOrDefault(c => c.Name.EqualsIgnoreCase(compositeName))
                                  ?.Definition;

            return(compositeDefinition != null);
        }