/// <summary>
        /// Gets child expandable ODCM objects for an ODCM class.
        /// </summary>
        /// <param name="class">The ODCM class</param>
        /// <param name="model">The ODCM model</param>
        /// <returns>The child ODCM objects for the given ODCM class.</returns>
        private static IEnumerable <OdcmProperty> GetChildObjects(this OdcmType type, OdcmModel model)
        {
            if (type == null)
            {
                throw new ArgumentNullException(nameof(type));
            }
            if (model == null)
            {
                throw new ArgumentNullException(nameof(model));
            }

            // Get the property's type and subtypes, and expand them to get their properties
            IEnumerable <OdcmProperty> properties            = type.EvaluateProperties().Where(prop => prop.IsODataRouteSegment(prop.Class == model.EntityContainer));
            IEnumerable <OdcmProperty> derivedTypeProperties = type.EvaluatePropertiesOnDerivedTypes().Where(prop => prop.IsODataRouteSegment(prop.Class == model.EntityContainer));

            return(properties.Concat(derivedTypeProperties));
        }