public static ISymbolModel GetModelForObject(JObject jObject)
        {
            switch (jObject.ToString(nameof(ISymbolModel.Type)))
            {
            case "parameter":
                return(ParameterSymbol.FromJObject(jObject));

            case "computed":
                return(ComputedSymbol.FromJObject(jObject));

            case "generated":
                return(GeneratedSymbol.FromJObject(jObject));

            default:
                return(null);
            }
        }
        // Note: Only ParameterSymbol has a Description property, this it's the only one that gets localization
        // TODO: change how localization gets merged in, don't do it here.
        public static ISymbolModel GetModelForObject(JObject jObject, IParameterSymbolLocalizationModel localization, string defaultOverride)
        {
            switch (jObject.ToString(nameof(ISymbolModel.Type)))
            {
            case ParameterSymbol.TypeName:
                return(ParameterSymbol.FromJObject(jObject, localization, defaultOverride));

            case ComputedSymbol.TypeName:
                return(ComputedSymbol.FromJObject(jObject));

            case BindSymbolTypeName:
            case GeneratedSymbol.TypeName:
                return(GeneratedSymbol.FromJObject(jObject));

            default:
                return(null);
            }
        }