/// <summary>
        ///     Adds a property backed up by an indexer to this entity type.
        /// </summary>
        /// <param name="entityType"> The entity type to add the property to. </param>
        /// <param name="name"> The name of the property to add. </param>
        /// <param name="propertyType"> The type of value the property will hold. </param>
        /// <returns> The newly created property. </returns>
        public static IMutableProperty AddIndexerProperty(
            [NotNull] this IMutableEntityType entityType, [NotNull] string name, [NotNull] Type propertyType)
        {
            Check.NotNull(entityType, nameof(entityType));

            var indexerPropertyInfo = entityType.FindIndexerPropertyInfo();

            if (indexerPropertyInfo == null)
            {
                throw new InvalidOperationException(
                          CoreStrings.NonIndexerEntityType(name, entityType.DisplayName(), typeof(string).ShortDisplayName()));
            }

            return(entityType.AddProperty(name, propertyType, indexerPropertyInfo));
        }