public static List <CodeClass> Parse(string jsonInput) { var rootDeviceObject = DeviceSchemaParser.Parse("DeviceSchema", jsonInput); var deviceObjects = rootDeviceObject.Members .Flatten(x => x is DeviceObject ? ((DeviceObject)x).Members : null) .Where(x => x is DeviceObject) .Cast <DeviceObject>() .ToList(); deviceObjects.Insert(0, rootDeviceObject); var codeClasses = deviceObjects.Select(deviceObject => CodeClass.CreateFrom(deviceObject)).ToList(); return(codeClasses); }