/// <summary>
        /// Gets the enum values, if any, for the specified path for this schema.
        /// </summary>
        /// <param name="flattenedPath">Flattened state path.</param>
        /// <returns>The enum values, or null if not an enum.</returns>
        public ICollection <object> GetEnumValuesForFlattenedPath(string flattenedPath)
        {
            if (StateSchema != null)
            {
                var result = StateSchema.Validator.GetEnumValuesForFlattenedPath(flattenedPath);
                if (result != null)
                {
                    return(result);
                }
            }

            if (CommandSchemas != null && CommandSchemas.Any())
            {
                foreach (var schema in CommandSchemas.Where(x => x.ResultsValidator != null))
                {
                    var result = schema.ResultsValidator.GetEnumValuesForFlattenedPath(flattenedPath);
                    if (result != null)
                    {
                        return(result);
                    }
                }
            }

            return(null);
        }
        /// <summary>
        /// Gets the Google type for the specified path is valid for this schema.
        /// </summary>
        /// <param name="flattenedPath">Flattened state path.</param>
        /// <returns>The <see cref="GoogleType"/> for the specified path.</returns>
        public GoogleType GetGoogleTypeForFlattenedPath(string flattenedPath)
        {
            if (StateSchema != null)
            {
                var result = StateSchema.Validator.GetGoogleTypeForFlattenedPath(flattenedPath);
                if (result != GoogleType.Unknown)
                {
                    return(result);
                }
            }

            if (CommandSchemas != null && CommandSchemas.Any())
            {
                foreach (var schema in CommandSchemas.Where(x => x.ResultsValidator != null))
                {
                    var result = schema.ResultsValidator.GetGoogleTypeForFlattenedPath(flattenedPath);
                    if (result != GoogleType.Unknown)
                    {
                        return(result);
                    }
                }
            }

            return(GoogleType.Unknown);
        }