private static List <ReflectiveRenderer.RenderableField> GetRenderables(ElementInfo info, int indent) { if (info.Content != null) { var type = ObjectSerializer.GetTypeForName(info.Name); if (Enum.TryParse(info.Content, out Neopal.PetType _)) { type = typeof(Neopal.PetType); } return(new List <ReflectiveRenderer.RenderableField>() { new ReflectiveRenderer.RenderableField() { IndentLevel = indent, IsTitle = false, RenderedValue = info.Content, t = type, VariableName = info.Name } }); } var list = new List <ReflectiveRenderer.RenderableField>() { new ReflectiveRenderer.RenderableField() { IndentLevel = indent, IsTitle = true, RenderedValue = info.Name } }; foreach (var child in info.Children) { list.AddRange(GetRenderables(child, indent + 1)); } return(list); }