cimoxide-structs 0.3.1

Generated Rust structs for the IEC 61970/61968 Common Information Model as profiled by ENTSO-E CGMES
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
// Generated by cimgen — do not edit by hand.
use std::collections::HashMap;
use crate::base::{CimElement, RdfBlock};

pub type ParseFn = fn(&RdfBlock) -> Box<dyn CimElement>;

pub fn registry() -> HashMap<&'static str, ParseFn> {
    let mut m: HashMap<&'static str, ParseFn> = HashMap::new();
    m.insert("ACDCConverter", |b| Box::new(super::ACDCConverter::from_block(b)));
    m.insert("ACDCConverterDCTerminal", |b| Box::new(super::ACDCConverterDCTerminal::from_block(b)));
    m.insert("ACDCTerminal", |b| Box::new(super::ACDCTerminal::from_block(b)));
    m.insert("ACLineSegment", |b| Box::new(super::ACLineSegment::from_block(b)));
    m.insert("Accumulator", |b| Box::new(super::Accumulator::from_block(b)));
    m.insert("AccumulatorLimit", |b| Box::new(super::AccumulatorLimit::from_block(b)));
    m.insert("AccumulatorLimitSet", |b| Box::new(super::AccumulatorLimitSet::from_block(b)));
    m.insert("AccumulatorReset", |b| Box::new(super::AccumulatorReset::from_block(b)));
    m.insert("AccumulatorValue", |b| Box::new(super::AccumulatorValue::from_block(b)));
    m.insert("ActivePowerLimit", |b| Box::new(super::ActivePowerLimit::from_block(b)));
    m.insert("Analog", |b| Box::new(super::Analog::from_block(b)));
    m.insert("AnalogControl", |b| Box::new(super::AnalogControl::from_block(b)));
    m.insert("AnalogLimit", |b| Box::new(super::AnalogLimit::from_block(b)));
    m.insert("AnalogLimitSet", |b| Box::new(super::AnalogLimitSet::from_block(b)));
    m.insert("AnalogValue", |b| Box::new(super::AnalogValue::from_block(b)));
    m.insert("ApparentPowerLimit", |b| Box::new(super::ApparentPowerLimit::from_block(b)));
    m.insert("AsynchronousMachine", |b| Box::new(super::AsynchronousMachine::from_block(b)));
    m.insert("AsynchronousMachineDynamics", |b| Box::new(super::AsynchronousMachineDynamics::from_block(b)));
    m.insert("AsynchronousMachineEquivalentCircuit", |b| Box::new(super::AsynchronousMachineEquivalentCircuit::from_block(b)));
    m.insert("AsynchronousMachineTimeConstantReactance", |b| Box::new(super::AsynchronousMachineTimeConstantReactance::from_block(b)));
    m.insert("AsynchronousMachineUserDefined", |b| Box::new(super::AsynchronousMachineUserDefined::from_block(b)));
    m.insert("AuxiliaryEquipment", |b| Box::new(super::AuxiliaryEquipment::from_block(b)));
    m.insert("BaseVoltage", |b| Box::new(super::BaseVoltage::from_block(b)));
    m.insert("BasicIntervalSchedule", |b| Box::new(super::BasicIntervalSchedule::from_block(b)));
    m.insert("BatteryUnit", |b| Box::new(super::BatteryUnit::from_block(b)));
    m.insert("Bay", |b| Box::new(super::Bay::from_block(b)));
    m.insert("BoundaryPoint", |b| Box::new(super::BoundaryPoint::from_block(b)));
    m.insert("Breaker", |b| Box::new(super::Breaker::from_block(b)));
    m.insert("BusNameMarker", |b| Box::new(super::BusNameMarker::from_block(b)));
    m.insert("BusbarSection", |b| Box::new(super::BusbarSection::from_block(b)));
    m.insert("CAESPlant", |b| Box::new(super::CAESPlant::from_block(b)));
    m.insert("CSCDynamics", |b| Box::new(super::CSCDynamics::from_block(b)));
    m.insert("CSCUserDefined", |b| Box::new(super::CSCUserDefined::from_block(b)));
    m.insert("Clamp", |b| Box::new(super::Clamp::from_block(b)));
    m.insert("CogenerationPlant", |b| Box::new(super::CogenerationPlant::from_block(b)));
    m.insert("CombinedCyclePlant", |b| Box::new(super::CombinedCyclePlant::from_block(b)));
    m.insert("Command", |b| Box::new(super::Command::from_block(b)));
    m.insert("ConductingEquipment", |b| Box::new(super::ConductingEquipment::from_block(b)));
    m.insert("Conductor", |b| Box::new(super::Conductor::from_block(b)));
    m.insert("ConformLoad", |b| Box::new(super::ConformLoad::from_block(b)));
    m.insert("ConformLoadGroup", |b| Box::new(super::ConformLoadGroup::from_block(b)));
    m.insert("ConformLoadSchedule", |b| Box::new(super::ConformLoadSchedule::from_block(b)));
    m.insert("ConnectivityNode", |b| Box::new(super::ConnectivityNode::from_block(b)));
    m.insert("ConnectivityNodeContainer", |b| Box::new(super::ConnectivityNodeContainer::from_block(b)));
    m.insert("Connector", |b| Box::new(super::Connector::from_block(b)));
    m.insert("Control", |b| Box::new(super::Control::from_block(b)));
    m.insert("ControlArea", |b| Box::new(super::ControlArea::from_block(b)));
    m.insert("ControlAreaGeneratingUnit", |b| Box::new(super::ControlAreaGeneratingUnit::from_block(b)));
    m.insert("CoordinateSystem", |b| Box::new(super::CoordinateSystem::from_block(b)));
    m.insert("CrossCompoundTurbineGovernorDynamics", |b| Box::new(super::CrossCompoundTurbineGovernorDynamics::from_block(b)));
    m.insert("CsConverter", |b| Box::new(super::CsConverter::from_block(b)));
    m.insert("CurrentLimit", |b| Box::new(super::CurrentLimit::from_block(b)));
    m.insert("CurrentTransformer", |b| Box::new(super::CurrentTransformer::from_block(b)));
    m.insert("Curve", |b| Box::new(super::Curve::from_block(b)));
    m.insert("CurveData", |b| Box::new(super::CurveData::from_block(b)));
    m.insert("Cut", |b| Box::new(super::Cut::from_block(b)));
    m.insert("DCBaseTerminal", |b| Box::new(super::DCBaseTerminal::from_block(b)));
    m.insert("DCBreaker", |b| Box::new(super::DCBreaker::from_block(b)));
    m.insert("DCBusbar", |b| Box::new(super::DCBusbar::from_block(b)));
    m.insert("DCChopper", |b| Box::new(super::DCChopper::from_block(b)));
    m.insert("DCConductingEquipment", |b| Box::new(super::DCConductingEquipment::from_block(b)));
    m.insert("DCConverterUnit", |b| Box::new(super::DCConverterUnit::from_block(b)));
    m.insert("DCDisconnector", |b| Box::new(super::DCDisconnector::from_block(b)));
    m.insert("DCEquipmentContainer", |b| Box::new(super::DCEquipmentContainer::from_block(b)));
    m.insert("DCGround", |b| Box::new(super::DCGround::from_block(b)));
    m.insert("DCLine", |b| Box::new(super::DCLine::from_block(b)));
    m.insert("DCLineSegment", |b| Box::new(super::DCLineSegment::from_block(b)));
    m.insert("DCNode", |b| Box::new(super::DCNode::from_block(b)));
    m.insert("DCSeriesDevice", |b| Box::new(super::DCSeriesDevice::from_block(b)));
    m.insert("DCShunt", |b| Box::new(super::DCShunt::from_block(b)));
    m.insert("DCSwitch", |b| Box::new(super::DCSwitch::from_block(b)));
    m.insert("DCTerminal", |b| Box::new(super::DCTerminal::from_block(b)));
    m.insert("DCTopologicalIsland", |b| Box::new(super::DCTopologicalIsland::from_block(b)));
    m.insert("DCTopologicalNode", |b| Box::new(super::DCTopologicalNode::from_block(b)));
    m.insert("DayType", |b| Box::new(super::DayType::from_block(b)));
    m.insert("Diagram", |b| Box::new(super::Diagram::from_block(b)));
    m.insert("DiagramObject", |b| Box::new(super::DiagramObject::from_block(b)));
    m.insert("DiagramObjectGluePoint", |b| Box::new(super::DiagramObjectGluePoint::from_block(b)));
    m.insert("DiagramObjectPoint", |b| Box::new(super::DiagramObjectPoint::from_block(b)));
    m.insert("DiagramObjectStyle", |b| Box::new(super::DiagramObjectStyle::from_block(b)));
    m.insert("DiagramStyle", |b| Box::new(super::DiagramStyle::from_block(b)));
    m.insert("DifferenceModel", |b| Box::new(super::DifferenceModel::from_block(b)));
    m.insert("DiscExcContIEEEDEC1A", |b| Box::new(super::DiscExcContIEEEDEC1A::from_block(b)));
    m.insert("DiscExcContIEEEDEC2A", |b| Box::new(super::DiscExcContIEEEDEC2A::from_block(b)));
    m.insert("DiscExcContIEEEDEC3A", |b| Box::new(super::DiscExcContIEEEDEC3A::from_block(b)));
    m.insert("DisconnectingCircuitBreaker", |b| Box::new(super::DisconnectingCircuitBreaker::from_block(b)));
    m.insert("Disconnector", |b| Box::new(super::Disconnector::from_block(b)));
    m.insert("DiscontinuousExcitationControlDynamics", |b| Box::new(super::DiscontinuousExcitationControlDynamics::from_block(b)));
    m.insert("DiscontinuousExcitationControlUserDefined", |b| Box::new(super::DiscontinuousExcitationControlUserDefined::from_block(b)));
    m.insert("Discrete", |b| Box::new(super::Discrete::from_block(b)));
    m.insert("DiscreteValue", |b| Box::new(super::DiscreteValue::from_block(b)));
    m.insert("DynamicsFunctionBlock", |b| Box::new(super::DynamicsFunctionBlock::from_block(b)));
    m.insert("EarthFaultCompensator", |b| Box::new(super::EarthFaultCompensator::from_block(b)));
    m.insert("EnergyArea", |b| Box::new(super::EnergyArea::from_block(b)));
    m.insert("EnergyConnection", |b| Box::new(super::EnergyConnection::from_block(b)));
    m.insert("EnergyConsumer", |b| Box::new(super::EnergyConsumer::from_block(b)));
    m.insert("EnergySchedulingType", |b| Box::new(super::EnergySchedulingType::from_block(b)));
    m.insert("EnergySource", |b| Box::new(super::EnergySource::from_block(b)));
    m.insert("Equipment", |b| Box::new(super::Equipment::from_block(b)));
    m.insert("EquipmentContainer", |b| Box::new(super::EquipmentContainer::from_block(b)));
    m.insert("EquivalentBranch", |b| Box::new(super::EquivalentBranch::from_block(b)));
    m.insert("EquivalentEquipment", |b| Box::new(super::EquivalentEquipment::from_block(b)));
    m.insert("EquivalentInjection", |b| Box::new(super::EquivalentInjection::from_block(b)));
    m.insert("EquivalentNetwork", |b| Box::new(super::EquivalentNetwork::from_block(b)));
    m.insert("EquivalentShunt", |b| Box::new(super::EquivalentShunt::from_block(b)));
    m.insert("ExcAC1A", |b| Box::new(super::ExcAC1A::from_block(b)));
    m.insert("ExcAC2A", |b| Box::new(super::ExcAC2A::from_block(b)));
    m.insert("ExcAC3A", |b| Box::new(super::ExcAC3A::from_block(b)));
    m.insert("ExcAC4A", |b| Box::new(super::ExcAC4A::from_block(b)));
    m.insert("ExcAC5A", |b| Box::new(super::ExcAC5A::from_block(b)));
    m.insert("ExcAC6A", |b| Box::new(super::ExcAC6A::from_block(b)));
    m.insert("ExcAC8B", |b| Box::new(super::ExcAC8B::from_block(b)));
    m.insert("ExcANS", |b| Box::new(super::ExcANS::from_block(b)));
    m.insert("ExcAVR1", |b| Box::new(super::ExcAVR1::from_block(b)));
    m.insert("ExcAVR2", |b| Box::new(super::ExcAVR2::from_block(b)));
    m.insert("ExcAVR3", |b| Box::new(super::ExcAVR3::from_block(b)));
    m.insert("ExcAVR4", |b| Box::new(super::ExcAVR4::from_block(b)));
    m.insert("ExcAVR5", |b| Box::new(super::ExcAVR5::from_block(b)));
    m.insert("ExcAVR7", |b| Box::new(super::ExcAVR7::from_block(b)));
    m.insert("ExcBBC", |b| Box::new(super::ExcBBC::from_block(b)));
    m.insert("ExcCZ", |b| Box::new(super::ExcCZ::from_block(b)));
    m.insert("ExcDC1A", |b| Box::new(super::ExcDC1A::from_block(b)));
    m.insert("ExcDC2A", |b| Box::new(super::ExcDC2A::from_block(b)));
    m.insert("ExcDC3A", |b| Box::new(super::ExcDC3A::from_block(b)));
    m.insert("ExcDC3A1", |b| Box::new(super::ExcDC3A1::from_block(b)));
    m.insert("ExcELIN1", |b| Box::new(super::ExcELIN1::from_block(b)));
    m.insert("ExcELIN2", |b| Box::new(super::ExcELIN2::from_block(b)));
    m.insert("ExcHU", |b| Box::new(super::ExcHU::from_block(b)));
    m.insert("ExcIEEEAC1A", |b| Box::new(super::ExcIEEEAC1A::from_block(b)));
    m.insert("ExcIEEEAC2A", |b| Box::new(super::ExcIEEEAC2A::from_block(b)));
    m.insert("ExcIEEEAC3A", |b| Box::new(super::ExcIEEEAC3A::from_block(b)));
    m.insert("ExcIEEEAC4A", |b| Box::new(super::ExcIEEEAC4A::from_block(b)));
    m.insert("ExcIEEEAC5A", |b| Box::new(super::ExcIEEEAC5A::from_block(b)));
    m.insert("ExcIEEEAC6A", |b| Box::new(super::ExcIEEEAC6A::from_block(b)));
    m.insert("ExcIEEEAC7B", |b| Box::new(super::ExcIEEEAC7B::from_block(b)));
    m.insert("ExcIEEEAC8B", |b| Box::new(super::ExcIEEEAC8B::from_block(b)));
    m.insert("ExcIEEEDC1A", |b| Box::new(super::ExcIEEEDC1A::from_block(b)));
    m.insert("ExcIEEEDC2A", |b| Box::new(super::ExcIEEEDC2A::from_block(b)));
    m.insert("ExcIEEEDC3A", |b| Box::new(super::ExcIEEEDC3A::from_block(b)));
    m.insert("ExcIEEEDC4B", |b| Box::new(super::ExcIEEEDC4B::from_block(b)));
    m.insert("ExcIEEEST1A", |b| Box::new(super::ExcIEEEST1A::from_block(b)));
    m.insert("ExcIEEEST2A", |b| Box::new(super::ExcIEEEST2A::from_block(b)));
    m.insert("ExcIEEEST3A", |b| Box::new(super::ExcIEEEST3A::from_block(b)));
    m.insert("ExcIEEEST4B", |b| Box::new(super::ExcIEEEST4B::from_block(b)));
    m.insert("ExcIEEEST5B", |b| Box::new(super::ExcIEEEST5B::from_block(b)));
    m.insert("ExcIEEEST6B", |b| Box::new(super::ExcIEEEST6B::from_block(b)));
    m.insert("ExcIEEEST7B", |b| Box::new(super::ExcIEEEST7B::from_block(b)));
    m.insert("ExcNI", |b| Box::new(super::ExcNI::from_block(b)));
    m.insert("ExcOEX3T", |b| Box::new(super::ExcOEX3T::from_block(b)));
    m.insert("ExcPIC", |b| Box::new(super::ExcPIC::from_block(b)));
    m.insert("ExcREXS", |b| Box::new(super::ExcREXS::from_block(b)));
    m.insert("ExcRQB", |b| Box::new(super::ExcRQB::from_block(b)));
    m.insert("ExcSCRX", |b| Box::new(super::ExcSCRX::from_block(b)));
    m.insert("ExcSEXS", |b| Box::new(super::ExcSEXS::from_block(b)));
    m.insert("ExcSK", |b| Box::new(super::ExcSK::from_block(b)));
    m.insert("ExcST1A", |b| Box::new(super::ExcST1A::from_block(b)));
    m.insert("ExcST2A", |b| Box::new(super::ExcST2A::from_block(b)));
    m.insert("ExcST3A", |b| Box::new(super::ExcST3A::from_block(b)));
    m.insert("ExcST4B", |b| Box::new(super::ExcST4B::from_block(b)));
    m.insert("ExcST6B", |b| Box::new(super::ExcST6B::from_block(b)));
    m.insert("ExcST7B", |b| Box::new(super::ExcST7B::from_block(b)));
    m.insert("ExcitationSystemDynamics", |b| Box::new(super::ExcitationSystemDynamics::from_block(b)));
    m.insert("ExcitationSystemUserDefined", |b| Box::new(super::ExcitationSystemUserDefined::from_block(b)));
    m.insert("ExternalNetworkInjection", |b| Box::new(super::ExternalNetworkInjection::from_block(b)));
    m.insert("FaultIndicator", |b| Box::new(super::FaultIndicator::from_block(b)));
    m.insert("FossilFuel", |b| Box::new(super::FossilFuel::from_block(b)));
    m.insert("FullModel", |b| Box::new(super::FullModel::from_block(b)));
    m.insert("Fuse", |b| Box::new(super::Fuse::from_block(b)));
    m.insert("GenICompensationForGenJ", |b| Box::new(super::GenICompensationForGenJ::from_block(b)));
    m.insert("GeneratingUnit", |b| Box::new(super::GeneratingUnit::from_block(b)));
    m.insert("GeographicalRegion", |b| Box::new(super::GeographicalRegion::from_block(b)));
    m.insert("GovCT1", |b| Box::new(super::GovCT1::from_block(b)));
    m.insert("GovCT2", |b| Box::new(super::GovCT2::from_block(b)));
    m.insert("GovGAST", |b| Box::new(super::GovGAST::from_block(b)));
    m.insert("GovGAST1", |b| Box::new(super::GovGAST1::from_block(b)));
    m.insert("GovGAST2", |b| Box::new(super::GovGAST2::from_block(b)));
    m.insert("GovGAST3", |b| Box::new(super::GovGAST3::from_block(b)));
    m.insert("GovGAST4", |b| Box::new(super::GovGAST4::from_block(b)));
    m.insert("GovGASTWD", |b| Box::new(super::GovGASTWD::from_block(b)));
    m.insert("GovHydro1", |b| Box::new(super::GovHydro1::from_block(b)));
    m.insert("GovHydro2", |b| Box::new(super::GovHydro2::from_block(b)));
    m.insert("GovHydro3", |b| Box::new(super::GovHydro3::from_block(b)));
    m.insert("GovHydro4", |b| Box::new(super::GovHydro4::from_block(b)));
    m.insert("GovHydroDD", |b| Box::new(super::GovHydroDD::from_block(b)));
    m.insert("GovHydroFrancis", |b| Box::new(super::GovHydroFrancis::from_block(b)));
    m.insert("GovHydroIEEE0", |b| Box::new(super::GovHydroIEEE0::from_block(b)));
    m.insert("GovHydroIEEE2", |b| Box::new(super::GovHydroIEEE2::from_block(b)));
    m.insert("GovHydroPID", |b| Box::new(super::GovHydroPID::from_block(b)));
    m.insert("GovHydroPID2", |b| Box::new(super::GovHydroPID2::from_block(b)));
    m.insert("GovHydroPelton", |b| Box::new(super::GovHydroPelton::from_block(b)));
    m.insert("GovHydroR", |b| Box::new(super::GovHydroR::from_block(b)));
    m.insert("GovHydroWEH", |b| Box::new(super::GovHydroWEH::from_block(b)));
    m.insert("GovHydroWPID", |b| Box::new(super::GovHydroWPID::from_block(b)));
    m.insert("GovSteam0", |b| Box::new(super::GovSteam0::from_block(b)));
    m.insert("GovSteam1", |b| Box::new(super::GovSteam1::from_block(b)));
    m.insert("GovSteam2", |b| Box::new(super::GovSteam2::from_block(b)));
    m.insert("GovSteamBB", |b| Box::new(super::GovSteamBB::from_block(b)));
    m.insert("GovSteamCC", |b| Box::new(super::GovSteamCC::from_block(b)));
    m.insert("GovSteamEU", |b| Box::new(super::GovSteamEU::from_block(b)));
    m.insert("GovSteamFV2", |b| Box::new(super::GovSteamFV2::from_block(b)));
    m.insert("GovSteamFV3", |b| Box::new(super::GovSteamFV3::from_block(b)));
    m.insert("GovSteamFV4", |b| Box::new(super::GovSteamFV4::from_block(b)));
    m.insert("GovSteamIEEE1", |b| Box::new(super::GovSteamIEEE1::from_block(b)));
    m.insert("GovSteamSGO", |b| Box::new(super::GovSteamSGO::from_block(b)));
    m.insert("GrossToNetActivePowerCurve", |b| Box::new(super::GrossToNetActivePowerCurve::from_block(b)));
    m.insert("Ground", |b| Box::new(super::Ground::from_block(b)));
    m.insert("GroundDisconnector", |b| Box::new(super::GroundDisconnector::from_block(b)));
    m.insert("GroundingImpedance", |b| Box::new(super::GroundingImpedance::from_block(b)));
    m.insert("HVDCDynamics", |b| Box::new(super::HVDCDynamics::from_block(b)));
    m.insert("HydroGeneratingUnit", |b| Box::new(super::HydroGeneratingUnit::from_block(b)));
    m.insert("HydroPowerPlant", |b| Box::new(super::HydroPowerPlant::from_block(b)));
    m.insert("HydroPump", |b| Box::new(super::HydroPump::from_block(b)));
    m.insert("IOPoint", |b| Box::new(super::IOPoint::from_block(b)));
    m.insert("IdentifiedObject", |b| Box::new(super::IdentifiedObject::from_block(b)));
    m.insert("Jumper", |b| Box::new(super::Jumper::from_block(b)));
    m.insert("Junction", |b| Box::new(super::Junction::from_block(b)));
    m.insert("Limit", |b| Box::new(super::Limit::from_block(b)));
    m.insert("LimitKind", |b| Box::new(super::LimitKind::from_block(b)));
    m.insert("LimitSet", |b| Box::new(super::LimitSet::from_block(b)));
    m.insert("Line", |b| Box::new(super::Line::from_block(b)));
    m.insert("LinearShuntCompensator", |b| Box::new(super::LinearShuntCompensator::from_block(b)));
    m.insert("LoadAggregate", |b| Box::new(super::LoadAggregate::from_block(b)));
    m.insert("LoadArea", |b| Box::new(super::LoadArea::from_block(b)));
    m.insert("LoadBreakSwitch", |b| Box::new(super::LoadBreakSwitch::from_block(b)));
    m.insert("LoadComposite", |b| Box::new(super::LoadComposite::from_block(b)));
    m.insert("LoadDynamics", |b| Box::new(super::LoadDynamics::from_block(b)));
    m.insert("LoadGenericNonLinear", |b| Box::new(super::LoadGenericNonLinear::from_block(b)));
    m.insert("LoadGroup", |b| Box::new(super::LoadGroup::from_block(b)));
    m.insert("LoadMotor", |b| Box::new(super::LoadMotor::from_block(b)));
    m.insert("LoadResponseCharacteristic", |b| Box::new(super::LoadResponseCharacteristic::from_block(b)));
    m.insert("LoadStatic", |b| Box::new(super::LoadStatic::from_block(b)));
    m.insert("LoadUserDefined", |b| Box::new(super::LoadUserDefined::from_block(b)));
    m.insert("Location", |b| Box::new(super::Location::from_block(b)));
    m.insert("Measurement", |b| Box::new(super::Measurement::from_block(b)));
    m.insert("MeasurementValue", |b| Box::new(super::MeasurementValue::from_block(b)));
    m.insert("MeasurementValueQuality", |b| Box::new(super::MeasurementValueQuality::from_block(b)));
    m.insert("MeasurementValueSource", |b| Box::new(super::MeasurementValueSource::from_block(b)));
    m.insert("MechLoad1", |b| Box::new(super::MechLoad1::from_block(b)));
    m.insert("MechanicalLoadDynamics", |b| Box::new(super::MechanicalLoadDynamics::from_block(b)));
    m.insert("MechanicalLoadUserDefined", |b| Box::new(super::MechanicalLoadUserDefined::from_block(b)));
    m.insert("Model", |b| Box::new(super::Model::from_block(b)));
    m.insert("MutualCoupling", |b| Box::new(super::MutualCoupling::from_block(b)));
    m.insert("NonConformLoad", |b| Box::new(super::NonConformLoad::from_block(b)));
    m.insert("NonConformLoadGroup", |b| Box::new(super::NonConformLoadGroup::from_block(b)));
    m.insert("NonConformLoadSchedule", |b| Box::new(super::NonConformLoadSchedule::from_block(b)));
    m.insert("NonlinearShuntCompensator", |b| Box::new(super::NonlinearShuntCompensator::from_block(b)));
    m.insert("NonlinearShuntCompensatorPoint", |b| Box::new(super::NonlinearShuntCompensatorPoint::from_block(b)));
    m.insert("NuclearGeneratingUnit", |b| Box::new(super::NuclearGeneratingUnit::from_block(b)));
    m.insert("OperationalLimit", |b| Box::new(super::OperationalLimit::from_block(b)));
    m.insert("OperationalLimitSet", |b| Box::new(super::OperationalLimitSet::from_block(b)));
    m.insert("OperationalLimitType", |b| Box::new(super::OperationalLimitType::from_block(b)));
    m.insert("OverexcLim2", |b| Box::new(super::OverexcLim2::from_block(b)));
    m.insert("OverexcLimIEEE", |b| Box::new(super::OverexcLimIEEE::from_block(b)));
    m.insert("OverexcLimX1", |b| Box::new(super::OverexcLimX1::from_block(b)));
    m.insert("OverexcLimX2", |b| Box::new(super::OverexcLimX2::from_block(b)));
    m.insert("OverexcitationLimiterDynamics", |b| Box::new(super::OverexcitationLimiterDynamics::from_block(b)));
    m.insert("OverexcitationLimiterUserDefined", |b| Box::new(super::OverexcitationLimiterUserDefined::from_block(b)));
    m.insert("PFVArControllerType1Dynamics", |b| Box::new(super::PFVArControllerType1Dynamics::from_block(b)));
    m.insert("PFVArControllerType1UserDefined", |b| Box::new(super::PFVArControllerType1UserDefined::from_block(b)));
    m.insert("PFVArControllerType2Dynamics", |b| Box::new(super::PFVArControllerType2Dynamics::from_block(b)));
    m.insert("PFVArControllerType2UserDefined", |b| Box::new(super::PFVArControllerType2UserDefined::from_block(b)));
    m.insert("PFVArType1IEEEPFController", |b| Box::new(super::PFVArType1IEEEPFController::from_block(b)));
    m.insert("PFVArType1IEEEVArController", |b| Box::new(super::PFVArType1IEEEVArController::from_block(b)));
    m.insert("PFVArType2Common1", |b| Box::new(super::PFVArType2Common1::from_block(b)));
    m.insert("PFVArType2IEEEPFController", |b| Box::new(super::PFVArType2IEEEPFController::from_block(b)));
    m.insert("PFVArType2IEEEVArController", |b| Box::new(super::PFVArType2IEEEVArController::from_block(b)));
    m.insert("PetersenCoil", |b| Box::new(super::PetersenCoil::from_block(b)));
    m.insert("PhaseTapChanger", |b| Box::new(super::PhaseTapChanger::from_block(b)));
    m.insert("PhaseTapChangerAsymmetrical", |b| Box::new(super::PhaseTapChangerAsymmetrical::from_block(b)));
    m.insert("PhaseTapChangerLinear", |b| Box::new(super::PhaseTapChangerLinear::from_block(b)));
    m.insert("PhaseTapChangerNonLinear", |b| Box::new(super::PhaseTapChangerNonLinear::from_block(b)));
    m.insert("PhaseTapChangerSymmetrical", |b| Box::new(super::PhaseTapChangerSymmetrical::from_block(b)));
    m.insert("PhaseTapChangerTable", |b| Box::new(super::PhaseTapChangerTable::from_block(b)));
    m.insert("PhaseTapChangerTablePoint", |b| Box::new(super::PhaseTapChangerTablePoint::from_block(b)));
    m.insert("PhaseTapChangerTabular", |b| Box::new(super::PhaseTapChangerTabular::from_block(b)));
    m.insert("PhotoVoltaicUnit", |b| Box::new(super::PhotoVoltaicUnit::from_block(b)));
    m.insert("PositionPoint", |b| Box::new(super::PositionPoint::from_block(b)));
    m.insert("PostLineSensor", |b| Box::new(super::PostLineSensor::from_block(b)));
    m.insert("PotentialTransformer", |b| Box::new(super::PotentialTransformer::from_block(b)));
    m.insert("PowerElectronicsConnection", |b| Box::new(super::PowerElectronicsConnection::from_block(b)));
    m.insert("PowerElectronicsUnit", |b| Box::new(super::PowerElectronicsUnit::from_block(b)));
    m.insert("PowerElectronicsWindUnit", |b| Box::new(super::PowerElectronicsWindUnit::from_block(b)));
    m.insert("PowerSystemResource", |b| Box::new(super::PowerSystemResource::from_block(b)));
    m.insert("PowerSystemStabilizerDynamics", |b| Box::new(super::PowerSystemStabilizerDynamics::from_block(b)));
    m.insert("PowerSystemStabilizerUserDefined", |b| Box::new(super::PowerSystemStabilizerUserDefined::from_block(b)));
    m.insert("PowerTransformer", |b| Box::new(super::PowerTransformer::from_block(b)));
    m.insert("PowerTransformerEnd", |b| Box::new(super::PowerTransformerEnd::from_block(b)));
    m.insert("ProprietaryParameterDynamics", |b| Box::new(super::ProprietaryParameterDynamics::from_block(b)));
    m.insert("ProtectedSwitch", |b| Box::new(super::ProtectedSwitch::from_block(b)));
    m.insert("Pss1", |b| Box::new(super::Pss1::from_block(b)));
    m.insert("Pss1A", |b| Box::new(super::Pss1A::from_block(b)));
    m.insert("Pss2B", |b| Box::new(super::Pss2B::from_block(b)));
    m.insert("Pss2ST", |b| Box::new(super::Pss2ST::from_block(b)));
    m.insert("Pss5", |b| Box::new(super::Pss5::from_block(b)));
    m.insert("PssELIN2", |b| Box::new(super::PssELIN2::from_block(b)));
    m.insert("PssIEEE1A", |b| Box::new(super::PssIEEE1A::from_block(b)));
    m.insert("PssIEEE2B", |b| Box::new(super::PssIEEE2B::from_block(b)));
    m.insert("PssIEEE3B", |b| Box::new(super::PssIEEE3B::from_block(b)));
    m.insert("PssIEEE4B", |b| Box::new(super::PssIEEE4B::from_block(b)));
    m.insert("PssPTIST1", |b| Box::new(super::PssPTIST1::from_block(b)));
    m.insert("PssPTIST3", |b| Box::new(super::PssPTIST3::from_block(b)));
    m.insert("PssRQB", |b| Box::new(super::PssRQB::from_block(b)));
    m.insert("PssSB4", |b| Box::new(super::PssSB4::from_block(b)));
    m.insert("PssSH", |b| Box::new(super::PssSH::from_block(b)));
    m.insert("PssSK", |b| Box::new(super::PssSK::from_block(b)));
    m.insert("PssSTAB2A", |b| Box::new(super::PssSTAB2A::from_block(b)));
    m.insert("PssWECC", |b| Box::new(super::PssWECC::from_block(b)));
    m.insert("Quality61850", |b| Box::new(super::Quality61850::from_block(b)));
    m.insert("RaiseLowerCommand", |b| Box::new(super::RaiseLowerCommand::from_block(b)));
    m.insert("RatioTapChanger", |b| Box::new(super::RatioTapChanger::from_block(b)));
    m.insert("RatioTapChangerTable", |b| Box::new(super::RatioTapChangerTable::from_block(b)));
    m.insert("RatioTapChangerTablePoint", |b| Box::new(super::RatioTapChangerTablePoint::from_block(b)));
    m.insert("ReactiveCapabilityCurve", |b| Box::new(super::ReactiveCapabilityCurve::from_block(b)));
    m.insert("RegularIntervalSchedule", |b| Box::new(super::RegularIntervalSchedule::from_block(b)));
    m.insert("RegularTimePoint", |b| Box::new(super::RegularTimePoint::from_block(b)));
    m.insert("RegulatingCondEq", |b| Box::new(super::RegulatingCondEq::from_block(b)));
    m.insert("RegulatingControl", |b| Box::new(super::RegulatingControl::from_block(b)));
    m.insert("RegulationSchedule", |b| Box::new(super::RegulationSchedule::from_block(b)));
    m.insert("RemoteInputSignal", |b| Box::new(super::RemoteInputSignal::from_block(b)));
    m.insert("ReportingGroup", |b| Box::new(super::ReportingGroup::from_block(b)));
    m.insert("RotatingMachine", |b| Box::new(super::RotatingMachine::from_block(b)));
    m.insert("RotatingMachineDynamics", |b| Box::new(super::RotatingMachineDynamics::from_block(b)));
    m.insert("SVCControlMode", |b| Box::new(super::SVCControlMode::from_block(b)));
    m.insert("SVCUserDefined", |b| Box::new(super::SVCUserDefined::from_block(b)));
    m.insert("Season", |b| Box::new(super::Season::from_block(b)));
    m.insert("SeasonDayTypeSchedule", |b| Box::new(super::SeasonDayTypeSchedule::from_block(b)));
    m.insert("Sensor", |b| Box::new(super::Sensor::from_block(b)));
    m.insert("SeriesCompensator", |b| Box::new(super::SeriesCompensator::from_block(b)));
    m.insert("ServiceLocation", |b| Box::new(super::ServiceLocation::from_block(b)));
    m.insert("SetPoint", |b| Box::new(super::SetPoint::from_block(b)));
    m.insert("ShuntCompensator", |b| Box::new(super::ShuntCompensator::from_block(b)));
    m.insert("SolarGeneratingUnit", |b| Box::new(super::SolarGeneratingUnit::from_block(b)));
    m.insert("SolarPowerPlant", |b| Box::new(super::SolarPowerPlant::from_block(b)));
    m.insert("Statements", |b| Box::new(super::Statements::from_block(b)));
    m.insert("StaticVarCompensator", |b| Box::new(super::StaticVarCompensator::from_block(b)));
    m.insert("StaticVarCompensatorDynamics", |b| Box::new(super::StaticVarCompensatorDynamics::from_block(b)));
    m.insert("StationSupply", |b| Box::new(super::StationSupply::from_block(b)));
    m.insert("Status", |b| Box::new(super::Status::from_block(b)));
    m.insert("StreetAddress", |b| Box::new(super::StreetAddress::from_block(b)));
    m.insert("StreetDetail", |b| Box::new(super::StreetDetail::from_block(b)));
    m.insert("StringMeasurement", |b| Box::new(super::StringMeasurement::from_block(b)));
    m.insert("StringMeasurementValue", |b| Box::new(super::StringMeasurementValue::from_block(b)));
    m.insert("SubGeographicalRegion", |b| Box::new(super::SubGeographicalRegion::from_block(b)));
    m.insert("SubLoadArea", |b| Box::new(super::SubLoadArea::from_block(b)));
    m.insert("Substation", |b| Box::new(super::Substation::from_block(b)));
    m.insert("SurgeArrester", |b| Box::new(super::SurgeArrester::from_block(b)));
    m.insert("SvInjection", |b| Box::new(super::SvInjection::from_block(b)));
    m.insert("SvPowerFlow", |b| Box::new(super::SvPowerFlow::from_block(b)));
    m.insert("SvShuntCompensatorSections", |b| Box::new(super::SvShuntCompensatorSections::from_block(b)));
    m.insert("SvStatus", |b| Box::new(super::SvStatus::from_block(b)));
    m.insert("SvSwitch", |b| Box::new(super::SvSwitch::from_block(b)));
    m.insert("SvTapStep", |b| Box::new(super::SvTapStep::from_block(b)));
    m.insert("SvVoltage", |b| Box::new(super::SvVoltage::from_block(b)));
    m.insert("Switch", |b| Box::new(super::Switch::from_block(b)));
    m.insert("SwitchSchedule", |b| Box::new(super::SwitchSchedule::from_block(b)));
    m.insert("SynchronousMachine", |b| Box::new(super::SynchronousMachine::from_block(b)));
    m.insert("SynchronousMachineDetailed", |b| Box::new(super::SynchronousMachineDetailed::from_block(b)));
    m.insert("SynchronousMachineDynamics", |b| Box::new(super::SynchronousMachineDynamics::from_block(b)));
    m.insert("SynchronousMachineEquivalentCircuit", |b| Box::new(super::SynchronousMachineEquivalentCircuit::from_block(b)));
    m.insert("SynchronousMachineSimplified", |b| Box::new(super::SynchronousMachineSimplified::from_block(b)));
    m.insert("SynchronousMachineTimeConstantReactance", |b| Box::new(super::SynchronousMachineTimeConstantReactance::from_block(b)));
    m.insert("SynchronousMachineUserDefined", |b| Box::new(super::SynchronousMachineUserDefined::from_block(b)));
    m.insert("TapChanger", |b| Box::new(super::TapChanger::from_block(b)));
    m.insert("TapChangerControl", |b| Box::new(super::TapChangerControl::from_block(b)));
    m.insert("TapChangerTablePoint", |b| Box::new(super::TapChangerTablePoint::from_block(b)));
    m.insert("TapSchedule", |b| Box::new(super::TapSchedule::from_block(b)));
    m.insert("Terminal", |b| Box::new(super::Terminal::from_block(b)));
    m.insert("TextDiagramObject", |b| Box::new(super::TextDiagramObject::from_block(b)));
    m.insert("ThermalGeneratingUnit", |b| Box::new(super::ThermalGeneratingUnit::from_block(b)));
    m.insert("TieFlow", |b| Box::new(super::TieFlow::from_block(b)));
    m.insert("TopologicalIsland", |b| Box::new(super::TopologicalIsland::from_block(b)));
    m.insert("TopologicalNode", |b| Box::new(super::TopologicalNode::from_block(b)));
    m.insert("TownDetail", |b| Box::new(super::TownDetail::from_block(b)));
    m.insert("TransformerEnd", |b| Box::new(super::TransformerEnd::from_block(b)));
    m.insert("TurbLCFB1", |b| Box::new(super::TurbLCFB1::from_block(b)));
    m.insert("TurbineGovernorDynamics", |b| Box::new(super::TurbineGovernorDynamics::from_block(b)));
    m.insert("TurbineGovernorUserDefined", |b| Box::new(super::TurbineGovernorUserDefined::from_block(b)));
    m.insert("TurbineLoadControllerDynamics", |b| Box::new(super::TurbineLoadControllerDynamics::from_block(b)));
    m.insert("TurbineLoadControllerUserDefined", |b| Box::new(super::TurbineLoadControllerUserDefined::from_block(b)));
    m.insert("URI", |b| Box::new(super::URI::from_block(b)));
    m.insert("UnderexcLim2Simplified", |b| Box::new(super::UnderexcLim2Simplified::from_block(b)));
    m.insert("UnderexcLimIEEE1", |b| Box::new(super::UnderexcLimIEEE1::from_block(b)));
    m.insert("UnderexcLimIEEE2", |b| Box::new(super::UnderexcLimIEEE2::from_block(b)));
    m.insert("UnderexcLimX1", |b| Box::new(super::UnderexcLimX1::from_block(b)));
    m.insert("UnderexcLimX2", |b| Box::new(super::UnderexcLimX2::from_block(b)));
    m.insert("UnderexcitationLimiterDynamics", |b| Box::new(super::UnderexcitationLimiterDynamics::from_block(b)));
    m.insert("UnderexcitationLimiterUserDefined", |b| Box::new(super::UnderexcitationLimiterUserDefined::from_block(b)));
    m.insert("VAdjIEEE", |b| Box::new(super::VAdjIEEE::from_block(b)));
    m.insert("VCompIEEEType1", |b| Box::new(super::VCompIEEEType1::from_block(b)));
    m.insert("VCompIEEEType2", |b| Box::new(super::VCompIEEEType2::from_block(b)));
    m.insert("VSCDynamics", |b| Box::new(super::VSCDynamics::from_block(b)));
    m.insert("VSCUserDefined", |b| Box::new(super::VSCUserDefined::from_block(b)));
    m.insert("ValueAliasSet", |b| Box::new(super::ValueAliasSet::from_block(b)));
    m.insert("ValueToAlias", |b| Box::new(super::ValueToAlias::from_block(b)));
    m.insert("VisibilityLayer", |b| Box::new(super::VisibilityLayer::from_block(b)));
    m.insert("VoltageAdjusterDynamics", |b| Box::new(super::VoltageAdjusterDynamics::from_block(b)));
    m.insert("VoltageAdjusterUserDefined", |b| Box::new(super::VoltageAdjusterUserDefined::from_block(b)));
    m.insert("VoltageCompensatorDynamics", |b| Box::new(super::VoltageCompensatorDynamics::from_block(b)));
    m.insert("VoltageCompensatorUserDefined", |b| Box::new(super::VoltageCompensatorUserDefined::from_block(b)));
    m.insert("VoltageLevel", |b| Box::new(super::VoltageLevel::from_block(b)));
    m.insert("VoltageLimit", |b| Box::new(super::VoltageLimit::from_block(b)));
    m.insert("VsCapabilityCurve", |b| Box::new(super::VsCapabilityCurve::from_block(b)));
    m.insert("VsConverter", |b| Box::new(super::VsConverter::from_block(b)));
    m.insert("WaveTrap", |b| Box::new(super::WaveTrap::from_block(b)));
    m.insert("WindAeroConstIEC", |b| Box::new(super::WindAeroConstIEC::from_block(b)));
    m.insert("WindAeroOneDimIEC", |b| Box::new(super::WindAeroOneDimIEC::from_block(b)));
    m.insert("WindAeroTwoDimIEC", |b| Box::new(super::WindAeroTwoDimIEC::from_block(b)));
    m.insert("WindContCurrLimIEC", |b| Box::new(super::WindContCurrLimIEC::from_block(b)));
    m.insert("WindContPType3IEC", |b| Box::new(super::WindContPType3IEC::from_block(b)));
    m.insert("WindContPType4aIEC", |b| Box::new(super::WindContPType4aIEC::from_block(b)));
    m.insert("WindContPType4bIEC", |b| Box::new(super::WindContPType4bIEC::from_block(b)));
    m.insert("WindContPitchAngleIEC", |b| Box::new(super::WindContPitchAngleIEC::from_block(b)));
    m.insert("WindContQIEC", |b| Box::new(super::WindContQIEC::from_block(b)));
    m.insert("WindContQLimIEC", |b| Box::new(super::WindContQLimIEC::from_block(b)));
    m.insert("WindContQPQULimIEC", |b| Box::new(super::WindContQPQULimIEC::from_block(b)));
    m.insert("WindContRotorRIEC", |b| Box::new(super::WindContRotorRIEC::from_block(b)));
    m.insert("WindDynamicsLookupTable", |b| Box::new(super::WindDynamicsLookupTable::from_block(b)));
    m.insert("WindGenTurbineType1aIEC", |b| Box::new(super::WindGenTurbineType1aIEC::from_block(b)));
    m.insert("WindGenTurbineType1bIEC", |b| Box::new(super::WindGenTurbineType1bIEC::from_block(b)));
    m.insert("WindGenTurbineType2IEC", |b| Box::new(super::WindGenTurbineType2IEC::from_block(b)));
    m.insert("WindGenType3IEC", |b| Box::new(super::WindGenType3IEC::from_block(b)));
    m.insert("WindGenType3aIEC", |b| Box::new(super::WindGenType3aIEC::from_block(b)));
    m.insert("WindGenType3bIEC", |b| Box::new(super::WindGenType3bIEC::from_block(b)));
    m.insert("WindGenType4IEC", |b| Box::new(super::WindGenType4IEC::from_block(b)));
    m.insert("WindGeneratingUnit", |b| Box::new(super::WindGeneratingUnit::from_block(b)));
    m.insert("WindMechIEC", |b| Box::new(super::WindMechIEC::from_block(b)));
    m.insert("WindPitchContPowerIEC", |b| Box::new(super::WindPitchContPowerIEC::from_block(b)));
    m.insert("WindPlantDynamics", |b| Box::new(super::WindPlantDynamics::from_block(b)));
    m.insert("WindPlantFreqPcontrolIEC", |b| Box::new(super::WindPlantFreqPcontrolIEC::from_block(b)));
    m.insert("WindPlantIEC", |b| Box::new(super::WindPlantIEC::from_block(b)));
    m.insert("WindPlantReactiveControlIEC", |b| Box::new(super::WindPlantReactiveControlIEC::from_block(b)));
    m.insert("WindPlantUserDefined", |b| Box::new(super::WindPlantUserDefined::from_block(b)));
    m.insert("WindPowerPlant", |b| Box::new(super::WindPowerPlant::from_block(b)));
    m.insert("WindProtectionIEC", |b| Box::new(super::WindProtectionIEC::from_block(b)));
    m.insert("WindRefFrameRotIEC", |b| Box::new(super::WindRefFrameRotIEC::from_block(b)));
    m.insert("WindTurbineType1or2Dynamics", |b| Box::new(super::WindTurbineType1or2Dynamics::from_block(b)));
    m.insert("WindTurbineType1or2IEC", |b| Box::new(super::WindTurbineType1or2IEC::from_block(b)));
    m.insert("WindTurbineType3IEC", |b| Box::new(super::WindTurbineType3IEC::from_block(b)));
    m.insert("WindTurbineType3or4Dynamics", |b| Box::new(super::WindTurbineType3or4Dynamics::from_block(b)));
    m.insert("WindTurbineType3or4IEC", |b| Box::new(super::WindTurbineType3or4IEC::from_block(b)));
    m.insert("WindTurbineType4IEC", |b| Box::new(super::WindTurbineType4IEC::from_block(b)));
    m.insert("WindTurbineType4aIEC", |b| Box::new(super::WindTurbineType4aIEC::from_block(b)));
    m.insert("WindTurbineType4bIEC", |b| Box::new(super::WindTurbineType4bIEC::from_block(b)));
    m.insert("WindType1or2UserDefined", |b| Box::new(super::WindType1or2UserDefined::from_block(b)));
    m.insert("WindType3or4UserDefined", |b| Box::new(super::WindType3or4UserDefined::from_block(b)));
    m.insert("WorkLocation", |b| Box::new(super::WorkLocation::from_block(b)));
    m
}

pub type JsonParseFn = fn(serde_json::Value) -> Result<Box<dyn CimElement>, serde_json::Error>;

pub fn json_registry() -> HashMap<&'static str, JsonParseFn> {
    let mut m: HashMap<&'static str, JsonParseFn> = HashMap::new();
    m.insert("ACDCConverter", |v| Ok(Box::new(serde_json::from_value::<super::ACDCConverter>(v)?)));
    m.insert("ACDCConverterDCTerminal", |v| Ok(Box::new(serde_json::from_value::<super::ACDCConverterDCTerminal>(v)?)));
    m.insert("ACDCTerminal", |v| Ok(Box::new(serde_json::from_value::<super::ACDCTerminal>(v)?)));
    m.insert("ACLineSegment", |v| Ok(Box::new(serde_json::from_value::<super::ACLineSegment>(v)?)));
    m.insert("Accumulator", |v| Ok(Box::new(serde_json::from_value::<super::Accumulator>(v)?)));
    m.insert("AccumulatorLimit", |v| Ok(Box::new(serde_json::from_value::<super::AccumulatorLimit>(v)?)));
    m.insert("AccumulatorLimitSet", |v| Ok(Box::new(serde_json::from_value::<super::AccumulatorLimitSet>(v)?)));
    m.insert("AccumulatorReset", |v| Ok(Box::new(serde_json::from_value::<super::AccumulatorReset>(v)?)));
    m.insert("AccumulatorValue", |v| Ok(Box::new(serde_json::from_value::<super::AccumulatorValue>(v)?)));
    m.insert("ActivePowerLimit", |v| Ok(Box::new(serde_json::from_value::<super::ActivePowerLimit>(v)?)));
    m.insert("Analog", |v| Ok(Box::new(serde_json::from_value::<super::Analog>(v)?)));
    m.insert("AnalogControl", |v| Ok(Box::new(serde_json::from_value::<super::AnalogControl>(v)?)));
    m.insert("AnalogLimit", |v| Ok(Box::new(serde_json::from_value::<super::AnalogLimit>(v)?)));
    m.insert("AnalogLimitSet", |v| Ok(Box::new(serde_json::from_value::<super::AnalogLimitSet>(v)?)));
    m.insert("AnalogValue", |v| Ok(Box::new(serde_json::from_value::<super::AnalogValue>(v)?)));
    m.insert("ApparentPowerLimit", |v| Ok(Box::new(serde_json::from_value::<super::ApparentPowerLimit>(v)?)));
    m.insert("AsynchronousMachine", |v| Ok(Box::new(serde_json::from_value::<super::AsynchronousMachine>(v)?)));
    m.insert("AsynchronousMachineDynamics", |v| Ok(Box::new(serde_json::from_value::<super::AsynchronousMachineDynamics>(v)?)));
    m.insert("AsynchronousMachineEquivalentCircuit", |v| Ok(Box::new(serde_json::from_value::<super::AsynchronousMachineEquivalentCircuit>(v)?)));
    m.insert("AsynchronousMachineTimeConstantReactance", |v| Ok(Box::new(serde_json::from_value::<super::AsynchronousMachineTimeConstantReactance>(v)?)));
    m.insert("AsynchronousMachineUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::AsynchronousMachineUserDefined>(v)?)));
    m.insert("AuxiliaryEquipment", |v| Ok(Box::new(serde_json::from_value::<super::AuxiliaryEquipment>(v)?)));
    m.insert("BaseVoltage", |v| Ok(Box::new(serde_json::from_value::<super::BaseVoltage>(v)?)));
    m.insert("BasicIntervalSchedule", |v| Ok(Box::new(serde_json::from_value::<super::BasicIntervalSchedule>(v)?)));
    m.insert("BatteryUnit", |v| Ok(Box::new(serde_json::from_value::<super::BatteryUnit>(v)?)));
    m.insert("Bay", |v| Ok(Box::new(serde_json::from_value::<super::Bay>(v)?)));
    m.insert("BoundaryPoint", |v| Ok(Box::new(serde_json::from_value::<super::BoundaryPoint>(v)?)));
    m.insert("Breaker", |v| Ok(Box::new(serde_json::from_value::<super::Breaker>(v)?)));
    m.insert("BusNameMarker", |v| Ok(Box::new(serde_json::from_value::<super::BusNameMarker>(v)?)));
    m.insert("BusbarSection", |v| Ok(Box::new(serde_json::from_value::<super::BusbarSection>(v)?)));
    m.insert("CAESPlant", |v| Ok(Box::new(serde_json::from_value::<super::CAESPlant>(v)?)));
    m.insert("CSCDynamics", |v| Ok(Box::new(serde_json::from_value::<super::CSCDynamics>(v)?)));
    m.insert("CSCUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::CSCUserDefined>(v)?)));
    m.insert("Clamp", |v| Ok(Box::new(serde_json::from_value::<super::Clamp>(v)?)));
    m.insert("CogenerationPlant", |v| Ok(Box::new(serde_json::from_value::<super::CogenerationPlant>(v)?)));
    m.insert("CombinedCyclePlant", |v| Ok(Box::new(serde_json::from_value::<super::CombinedCyclePlant>(v)?)));
    m.insert("Command", |v| Ok(Box::new(serde_json::from_value::<super::Command>(v)?)));
    m.insert("ConductingEquipment", |v| Ok(Box::new(serde_json::from_value::<super::ConductingEquipment>(v)?)));
    m.insert("Conductor", |v| Ok(Box::new(serde_json::from_value::<super::Conductor>(v)?)));
    m.insert("ConformLoad", |v| Ok(Box::new(serde_json::from_value::<super::ConformLoad>(v)?)));
    m.insert("ConformLoadGroup", |v| Ok(Box::new(serde_json::from_value::<super::ConformLoadGroup>(v)?)));
    m.insert("ConformLoadSchedule", |v| Ok(Box::new(serde_json::from_value::<super::ConformLoadSchedule>(v)?)));
    m.insert("ConnectivityNode", |v| Ok(Box::new(serde_json::from_value::<super::ConnectivityNode>(v)?)));
    m.insert("ConnectivityNodeContainer", |v| Ok(Box::new(serde_json::from_value::<super::ConnectivityNodeContainer>(v)?)));
    m.insert("Connector", |v| Ok(Box::new(serde_json::from_value::<super::Connector>(v)?)));
    m.insert("Control", |v| Ok(Box::new(serde_json::from_value::<super::Control>(v)?)));
    m.insert("ControlArea", |v| Ok(Box::new(serde_json::from_value::<super::ControlArea>(v)?)));
    m.insert("ControlAreaGeneratingUnit", |v| Ok(Box::new(serde_json::from_value::<super::ControlAreaGeneratingUnit>(v)?)));
    m.insert("CoordinateSystem", |v| Ok(Box::new(serde_json::from_value::<super::CoordinateSystem>(v)?)));
    m.insert("CrossCompoundTurbineGovernorDynamics", |v| Ok(Box::new(serde_json::from_value::<super::CrossCompoundTurbineGovernorDynamics>(v)?)));
    m.insert("CsConverter", |v| Ok(Box::new(serde_json::from_value::<super::CsConverter>(v)?)));
    m.insert("CurrentLimit", |v| Ok(Box::new(serde_json::from_value::<super::CurrentLimit>(v)?)));
    m.insert("CurrentTransformer", |v| Ok(Box::new(serde_json::from_value::<super::CurrentTransformer>(v)?)));
    m.insert("Curve", |v| Ok(Box::new(serde_json::from_value::<super::Curve>(v)?)));
    m.insert("CurveData", |v| Ok(Box::new(serde_json::from_value::<super::CurveData>(v)?)));
    m.insert("Cut", |v| Ok(Box::new(serde_json::from_value::<super::Cut>(v)?)));
    m.insert("DCBaseTerminal", |v| Ok(Box::new(serde_json::from_value::<super::DCBaseTerminal>(v)?)));
    m.insert("DCBreaker", |v| Ok(Box::new(serde_json::from_value::<super::DCBreaker>(v)?)));
    m.insert("DCBusbar", |v| Ok(Box::new(serde_json::from_value::<super::DCBusbar>(v)?)));
    m.insert("DCChopper", |v| Ok(Box::new(serde_json::from_value::<super::DCChopper>(v)?)));
    m.insert("DCConductingEquipment", |v| Ok(Box::new(serde_json::from_value::<super::DCConductingEquipment>(v)?)));
    m.insert("DCConverterUnit", |v| Ok(Box::new(serde_json::from_value::<super::DCConverterUnit>(v)?)));
    m.insert("DCDisconnector", |v| Ok(Box::new(serde_json::from_value::<super::DCDisconnector>(v)?)));
    m.insert("DCEquipmentContainer", |v| Ok(Box::new(serde_json::from_value::<super::DCEquipmentContainer>(v)?)));
    m.insert("DCGround", |v| Ok(Box::new(serde_json::from_value::<super::DCGround>(v)?)));
    m.insert("DCLine", |v| Ok(Box::new(serde_json::from_value::<super::DCLine>(v)?)));
    m.insert("DCLineSegment", |v| Ok(Box::new(serde_json::from_value::<super::DCLineSegment>(v)?)));
    m.insert("DCNode", |v| Ok(Box::new(serde_json::from_value::<super::DCNode>(v)?)));
    m.insert("DCSeriesDevice", |v| Ok(Box::new(serde_json::from_value::<super::DCSeriesDevice>(v)?)));
    m.insert("DCShunt", |v| Ok(Box::new(serde_json::from_value::<super::DCShunt>(v)?)));
    m.insert("DCSwitch", |v| Ok(Box::new(serde_json::from_value::<super::DCSwitch>(v)?)));
    m.insert("DCTerminal", |v| Ok(Box::new(serde_json::from_value::<super::DCTerminal>(v)?)));
    m.insert("DCTopologicalIsland", |v| Ok(Box::new(serde_json::from_value::<super::DCTopologicalIsland>(v)?)));
    m.insert("DCTopologicalNode", |v| Ok(Box::new(serde_json::from_value::<super::DCTopologicalNode>(v)?)));
    m.insert("DayType", |v| Ok(Box::new(serde_json::from_value::<super::DayType>(v)?)));
    m.insert("Diagram", |v| Ok(Box::new(serde_json::from_value::<super::Diagram>(v)?)));
    m.insert("DiagramObject", |v| Ok(Box::new(serde_json::from_value::<super::DiagramObject>(v)?)));
    m.insert("DiagramObjectGluePoint", |v| Ok(Box::new(serde_json::from_value::<super::DiagramObjectGluePoint>(v)?)));
    m.insert("DiagramObjectPoint", |v| Ok(Box::new(serde_json::from_value::<super::DiagramObjectPoint>(v)?)));
    m.insert("DiagramObjectStyle", |v| Ok(Box::new(serde_json::from_value::<super::DiagramObjectStyle>(v)?)));
    m.insert("DiagramStyle", |v| Ok(Box::new(serde_json::from_value::<super::DiagramStyle>(v)?)));
    m.insert("DifferenceModel", |v| Ok(Box::new(serde_json::from_value::<super::DifferenceModel>(v)?)));
    m.insert("DiscExcContIEEEDEC1A", |v| Ok(Box::new(serde_json::from_value::<super::DiscExcContIEEEDEC1A>(v)?)));
    m.insert("DiscExcContIEEEDEC2A", |v| Ok(Box::new(serde_json::from_value::<super::DiscExcContIEEEDEC2A>(v)?)));
    m.insert("DiscExcContIEEEDEC3A", |v| Ok(Box::new(serde_json::from_value::<super::DiscExcContIEEEDEC3A>(v)?)));
    m.insert("DisconnectingCircuitBreaker", |v| Ok(Box::new(serde_json::from_value::<super::DisconnectingCircuitBreaker>(v)?)));
    m.insert("Disconnector", |v| Ok(Box::new(serde_json::from_value::<super::Disconnector>(v)?)));
    m.insert("DiscontinuousExcitationControlDynamics", |v| Ok(Box::new(serde_json::from_value::<super::DiscontinuousExcitationControlDynamics>(v)?)));
    m.insert("DiscontinuousExcitationControlUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::DiscontinuousExcitationControlUserDefined>(v)?)));
    m.insert("Discrete", |v| Ok(Box::new(serde_json::from_value::<super::Discrete>(v)?)));
    m.insert("DiscreteValue", |v| Ok(Box::new(serde_json::from_value::<super::DiscreteValue>(v)?)));
    m.insert("DynamicsFunctionBlock", |v| Ok(Box::new(serde_json::from_value::<super::DynamicsFunctionBlock>(v)?)));
    m.insert("EarthFaultCompensator", |v| Ok(Box::new(serde_json::from_value::<super::EarthFaultCompensator>(v)?)));
    m.insert("EnergyArea", |v| Ok(Box::new(serde_json::from_value::<super::EnergyArea>(v)?)));
    m.insert("EnergyConnection", |v| Ok(Box::new(serde_json::from_value::<super::EnergyConnection>(v)?)));
    m.insert("EnergyConsumer", |v| Ok(Box::new(serde_json::from_value::<super::EnergyConsumer>(v)?)));
    m.insert("EnergySchedulingType", |v| Ok(Box::new(serde_json::from_value::<super::EnergySchedulingType>(v)?)));
    m.insert("EnergySource", |v| Ok(Box::new(serde_json::from_value::<super::EnergySource>(v)?)));
    m.insert("Equipment", |v| Ok(Box::new(serde_json::from_value::<super::Equipment>(v)?)));
    m.insert("EquipmentContainer", |v| Ok(Box::new(serde_json::from_value::<super::EquipmentContainer>(v)?)));
    m.insert("EquivalentBranch", |v| Ok(Box::new(serde_json::from_value::<super::EquivalentBranch>(v)?)));
    m.insert("EquivalentEquipment", |v| Ok(Box::new(serde_json::from_value::<super::EquivalentEquipment>(v)?)));
    m.insert("EquivalentInjection", |v| Ok(Box::new(serde_json::from_value::<super::EquivalentInjection>(v)?)));
    m.insert("EquivalentNetwork", |v| Ok(Box::new(serde_json::from_value::<super::EquivalentNetwork>(v)?)));
    m.insert("EquivalentShunt", |v| Ok(Box::new(serde_json::from_value::<super::EquivalentShunt>(v)?)));
    m.insert("ExcAC1A", |v| Ok(Box::new(serde_json::from_value::<super::ExcAC1A>(v)?)));
    m.insert("ExcAC2A", |v| Ok(Box::new(serde_json::from_value::<super::ExcAC2A>(v)?)));
    m.insert("ExcAC3A", |v| Ok(Box::new(serde_json::from_value::<super::ExcAC3A>(v)?)));
    m.insert("ExcAC4A", |v| Ok(Box::new(serde_json::from_value::<super::ExcAC4A>(v)?)));
    m.insert("ExcAC5A", |v| Ok(Box::new(serde_json::from_value::<super::ExcAC5A>(v)?)));
    m.insert("ExcAC6A", |v| Ok(Box::new(serde_json::from_value::<super::ExcAC6A>(v)?)));
    m.insert("ExcAC8B", |v| Ok(Box::new(serde_json::from_value::<super::ExcAC8B>(v)?)));
    m.insert("ExcANS", |v| Ok(Box::new(serde_json::from_value::<super::ExcANS>(v)?)));
    m.insert("ExcAVR1", |v| Ok(Box::new(serde_json::from_value::<super::ExcAVR1>(v)?)));
    m.insert("ExcAVR2", |v| Ok(Box::new(serde_json::from_value::<super::ExcAVR2>(v)?)));
    m.insert("ExcAVR3", |v| Ok(Box::new(serde_json::from_value::<super::ExcAVR3>(v)?)));
    m.insert("ExcAVR4", |v| Ok(Box::new(serde_json::from_value::<super::ExcAVR4>(v)?)));
    m.insert("ExcAVR5", |v| Ok(Box::new(serde_json::from_value::<super::ExcAVR5>(v)?)));
    m.insert("ExcAVR7", |v| Ok(Box::new(serde_json::from_value::<super::ExcAVR7>(v)?)));
    m.insert("ExcBBC", |v| Ok(Box::new(serde_json::from_value::<super::ExcBBC>(v)?)));
    m.insert("ExcCZ", |v| Ok(Box::new(serde_json::from_value::<super::ExcCZ>(v)?)));
    m.insert("ExcDC1A", |v| Ok(Box::new(serde_json::from_value::<super::ExcDC1A>(v)?)));
    m.insert("ExcDC2A", |v| Ok(Box::new(serde_json::from_value::<super::ExcDC2A>(v)?)));
    m.insert("ExcDC3A", |v| Ok(Box::new(serde_json::from_value::<super::ExcDC3A>(v)?)));
    m.insert("ExcDC3A1", |v| Ok(Box::new(serde_json::from_value::<super::ExcDC3A1>(v)?)));
    m.insert("ExcELIN1", |v| Ok(Box::new(serde_json::from_value::<super::ExcELIN1>(v)?)));
    m.insert("ExcELIN2", |v| Ok(Box::new(serde_json::from_value::<super::ExcELIN2>(v)?)));
    m.insert("ExcHU", |v| Ok(Box::new(serde_json::from_value::<super::ExcHU>(v)?)));
    m.insert("ExcIEEEAC1A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEAC1A>(v)?)));
    m.insert("ExcIEEEAC2A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEAC2A>(v)?)));
    m.insert("ExcIEEEAC3A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEAC3A>(v)?)));
    m.insert("ExcIEEEAC4A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEAC4A>(v)?)));
    m.insert("ExcIEEEAC5A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEAC5A>(v)?)));
    m.insert("ExcIEEEAC6A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEAC6A>(v)?)));
    m.insert("ExcIEEEAC7B", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEAC7B>(v)?)));
    m.insert("ExcIEEEAC8B", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEAC8B>(v)?)));
    m.insert("ExcIEEEDC1A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEDC1A>(v)?)));
    m.insert("ExcIEEEDC2A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEDC2A>(v)?)));
    m.insert("ExcIEEEDC3A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEDC3A>(v)?)));
    m.insert("ExcIEEEDC4B", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEDC4B>(v)?)));
    m.insert("ExcIEEEST1A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEST1A>(v)?)));
    m.insert("ExcIEEEST2A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEST2A>(v)?)));
    m.insert("ExcIEEEST3A", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEST3A>(v)?)));
    m.insert("ExcIEEEST4B", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEST4B>(v)?)));
    m.insert("ExcIEEEST5B", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEST5B>(v)?)));
    m.insert("ExcIEEEST6B", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEST6B>(v)?)));
    m.insert("ExcIEEEST7B", |v| Ok(Box::new(serde_json::from_value::<super::ExcIEEEST7B>(v)?)));
    m.insert("ExcNI", |v| Ok(Box::new(serde_json::from_value::<super::ExcNI>(v)?)));
    m.insert("ExcOEX3T", |v| Ok(Box::new(serde_json::from_value::<super::ExcOEX3T>(v)?)));
    m.insert("ExcPIC", |v| Ok(Box::new(serde_json::from_value::<super::ExcPIC>(v)?)));
    m.insert("ExcREXS", |v| Ok(Box::new(serde_json::from_value::<super::ExcREXS>(v)?)));
    m.insert("ExcRQB", |v| Ok(Box::new(serde_json::from_value::<super::ExcRQB>(v)?)));
    m.insert("ExcSCRX", |v| Ok(Box::new(serde_json::from_value::<super::ExcSCRX>(v)?)));
    m.insert("ExcSEXS", |v| Ok(Box::new(serde_json::from_value::<super::ExcSEXS>(v)?)));
    m.insert("ExcSK", |v| Ok(Box::new(serde_json::from_value::<super::ExcSK>(v)?)));
    m.insert("ExcST1A", |v| Ok(Box::new(serde_json::from_value::<super::ExcST1A>(v)?)));
    m.insert("ExcST2A", |v| Ok(Box::new(serde_json::from_value::<super::ExcST2A>(v)?)));
    m.insert("ExcST3A", |v| Ok(Box::new(serde_json::from_value::<super::ExcST3A>(v)?)));
    m.insert("ExcST4B", |v| Ok(Box::new(serde_json::from_value::<super::ExcST4B>(v)?)));
    m.insert("ExcST6B", |v| Ok(Box::new(serde_json::from_value::<super::ExcST6B>(v)?)));
    m.insert("ExcST7B", |v| Ok(Box::new(serde_json::from_value::<super::ExcST7B>(v)?)));
    m.insert("ExcitationSystemDynamics", |v| Ok(Box::new(serde_json::from_value::<super::ExcitationSystemDynamics>(v)?)));
    m.insert("ExcitationSystemUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::ExcitationSystemUserDefined>(v)?)));
    m.insert("ExternalNetworkInjection", |v| Ok(Box::new(serde_json::from_value::<super::ExternalNetworkInjection>(v)?)));
    m.insert("FaultIndicator", |v| Ok(Box::new(serde_json::from_value::<super::FaultIndicator>(v)?)));
    m.insert("FossilFuel", |v| Ok(Box::new(serde_json::from_value::<super::FossilFuel>(v)?)));
    m.insert("FullModel", |v| Ok(Box::new(serde_json::from_value::<super::FullModel>(v)?)));
    m.insert("Fuse", |v| Ok(Box::new(serde_json::from_value::<super::Fuse>(v)?)));
    m.insert("GenICompensationForGenJ", |v| Ok(Box::new(serde_json::from_value::<super::GenICompensationForGenJ>(v)?)));
    m.insert("GeneratingUnit", |v| Ok(Box::new(serde_json::from_value::<super::GeneratingUnit>(v)?)));
    m.insert("GeographicalRegion", |v| Ok(Box::new(serde_json::from_value::<super::GeographicalRegion>(v)?)));
    m.insert("GovCT1", |v| Ok(Box::new(serde_json::from_value::<super::GovCT1>(v)?)));
    m.insert("GovCT2", |v| Ok(Box::new(serde_json::from_value::<super::GovCT2>(v)?)));
    m.insert("GovGAST", |v| Ok(Box::new(serde_json::from_value::<super::GovGAST>(v)?)));
    m.insert("GovGAST1", |v| Ok(Box::new(serde_json::from_value::<super::GovGAST1>(v)?)));
    m.insert("GovGAST2", |v| Ok(Box::new(serde_json::from_value::<super::GovGAST2>(v)?)));
    m.insert("GovGAST3", |v| Ok(Box::new(serde_json::from_value::<super::GovGAST3>(v)?)));
    m.insert("GovGAST4", |v| Ok(Box::new(serde_json::from_value::<super::GovGAST4>(v)?)));
    m.insert("GovGASTWD", |v| Ok(Box::new(serde_json::from_value::<super::GovGASTWD>(v)?)));
    m.insert("GovHydro1", |v| Ok(Box::new(serde_json::from_value::<super::GovHydro1>(v)?)));
    m.insert("GovHydro2", |v| Ok(Box::new(serde_json::from_value::<super::GovHydro2>(v)?)));
    m.insert("GovHydro3", |v| Ok(Box::new(serde_json::from_value::<super::GovHydro3>(v)?)));
    m.insert("GovHydro4", |v| Ok(Box::new(serde_json::from_value::<super::GovHydro4>(v)?)));
    m.insert("GovHydroDD", |v| Ok(Box::new(serde_json::from_value::<super::GovHydroDD>(v)?)));
    m.insert("GovHydroFrancis", |v| Ok(Box::new(serde_json::from_value::<super::GovHydroFrancis>(v)?)));
    m.insert("GovHydroIEEE0", |v| Ok(Box::new(serde_json::from_value::<super::GovHydroIEEE0>(v)?)));
    m.insert("GovHydroIEEE2", |v| Ok(Box::new(serde_json::from_value::<super::GovHydroIEEE2>(v)?)));
    m.insert("GovHydroPID", |v| Ok(Box::new(serde_json::from_value::<super::GovHydroPID>(v)?)));
    m.insert("GovHydroPID2", |v| Ok(Box::new(serde_json::from_value::<super::GovHydroPID2>(v)?)));
    m.insert("GovHydroPelton", |v| Ok(Box::new(serde_json::from_value::<super::GovHydroPelton>(v)?)));
    m.insert("GovHydroR", |v| Ok(Box::new(serde_json::from_value::<super::GovHydroR>(v)?)));
    m.insert("GovHydroWEH", |v| Ok(Box::new(serde_json::from_value::<super::GovHydroWEH>(v)?)));
    m.insert("GovHydroWPID", |v| Ok(Box::new(serde_json::from_value::<super::GovHydroWPID>(v)?)));
    m.insert("GovSteam0", |v| Ok(Box::new(serde_json::from_value::<super::GovSteam0>(v)?)));
    m.insert("GovSteam1", |v| Ok(Box::new(serde_json::from_value::<super::GovSteam1>(v)?)));
    m.insert("GovSteam2", |v| Ok(Box::new(serde_json::from_value::<super::GovSteam2>(v)?)));
    m.insert("GovSteamBB", |v| Ok(Box::new(serde_json::from_value::<super::GovSteamBB>(v)?)));
    m.insert("GovSteamCC", |v| Ok(Box::new(serde_json::from_value::<super::GovSteamCC>(v)?)));
    m.insert("GovSteamEU", |v| Ok(Box::new(serde_json::from_value::<super::GovSteamEU>(v)?)));
    m.insert("GovSteamFV2", |v| Ok(Box::new(serde_json::from_value::<super::GovSteamFV2>(v)?)));
    m.insert("GovSteamFV3", |v| Ok(Box::new(serde_json::from_value::<super::GovSteamFV3>(v)?)));
    m.insert("GovSteamFV4", |v| Ok(Box::new(serde_json::from_value::<super::GovSteamFV4>(v)?)));
    m.insert("GovSteamIEEE1", |v| Ok(Box::new(serde_json::from_value::<super::GovSteamIEEE1>(v)?)));
    m.insert("GovSteamSGO", |v| Ok(Box::new(serde_json::from_value::<super::GovSteamSGO>(v)?)));
    m.insert("GrossToNetActivePowerCurve", |v| Ok(Box::new(serde_json::from_value::<super::GrossToNetActivePowerCurve>(v)?)));
    m.insert("Ground", |v| Ok(Box::new(serde_json::from_value::<super::Ground>(v)?)));
    m.insert("GroundDisconnector", |v| Ok(Box::new(serde_json::from_value::<super::GroundDisconnector>(v)?)));
    m.insert("GroundingImpedance", |v| Ok(Box::new(serde_json::from_value::<super::GroundingImpedance>(v)?)));
    m.insert("HVDCDynamics", |v| Ok(Box::new(serde_json::from_value::<super::HVDCDynamics>(v)?)));
    m.insert("HydroGeneratingUnit", |v| Ok(Box::new(serde_json::from_value::<super::HydroGeneratingUnit>(v)?)));
    m.insert("HydroPowerPlant", |v| Ok(Box::new(serde_json::from_value::<super::HydroPowerPlant>(v)?)));
    m.insert("HydroPump", |v| Ok(Box::new(serde_json::from_value::<super::HydroPump>(v)?)));
    m.insert("IOPoint", |v| Ok(Box::new(serde_json::from_value::<super::IOPoint>(v)?)));
    m.insert("IdentifiedObject", |v| Ok(Box::new(serde_json::from_value::<super::IdentifiedObject>(v)?)));
    m.insert("Jumper", |v| Ok(Box::new(serde_json::from_value::<super::Jumper>(v)?)));
    m.insert("Junction", |v| Ok(Box::new(serde_json::from_value::<super::Junction>(v)?)));
    m.insert("Limit", |v| Ok(Box::new(serde_json::from_value::<super::Limit>(v)?)));
    m.insert("LimitKind", |v| Ok(Box::new(serde_json::from_value::<super::LimitKind>(v)?)));
    m.insert("LimitSet", |v| Ok(Box::new(serde_json::from_value::<super::LimitSet>(v)?)));
    m.insert("Line", |v| Ok(Box::new(serde_json::from_value::<super::Line>(v)?)));
    m.insert("LinearShuntCompensator", |v| Ok(Box::new(serde_json::from_value::<super::LinearShuntCompensator>(v)?)));
    m.insert("LoadAggregate", |v| Ok(Box::new(serde_json::from_value::<super::LoadAggregate>(v)?)));
    m.insert("LoadArea", |v| Ok(Box::new(serde_json::from_value::<super::LoadArea>(v)?)));
    m.insert("LoadBreakSwitch", |v| Ok(Box::new(serde_json::from_value::<super::LoadBreakSwitch>(v)?)));
    m.insert("LoadComposite", |v| Ok(Box::new(serde_json::from_value::<super::LoadComposite>(v)?)));
    m.insert("LoadDynamics", |v| Ok(Box::new(serde_json::from_value::<super::LoadDynamics>(v)?)));
    m.insert("LoadGenericNonLinear", |v| Ok(Box::new(serde_json::from_value::<super::LoadGenericNonLinear>(v)?)));
    m.insert("LoadGroup", |v| Ok(Box::new(serde_json::from_value::<super::LoadGroup>(v)?)));
    m.insert("LoadMotor", |v| Ok(Box::new(serde_json::from_value::<super::LoadMotor>(v)?)));
    m.insert("LoadResponseCharacteristic", |v| Ok(Box::new(serde_json::from_value::<super::LoadResponseCharacteristic>(v)?)));
    m.insert("LoadStatic", |v| Ok(Box::new(serde_json::from_value::<super::LoadStatic>(v)?)));
    m.insert("LoadUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::LoadUserDefined>(v)?)));
    m.insert("Location", |v| Ok(Box::new(serde_json::from_value::<super::Location>(v)?)));
    m.insert("Measurement", |v| Ok(Box::new(serde_json::from_value::<super::Measurement>(v)?)));
    m.insert("MeasurementValue", |v| Ok(Box::new(serde_json::from_value::<super::MeasurementValue>(v)?)));
    m.insert("MeasurementValueQuality", |v| Ok(Box::new(serde_json::from_value::<super::MeasurementValueQuality>(v)?)));
    m.insert("MeasurementValueSource", |v| Ok(Box::new(serde_json::from_value::<super::MeasurementValueSource>(v)?)));
    m.insert("MechLoad1", |v| Ok(Box::new(serde_json::from_value::<super::MechLoad1>(v)?)));
    m.insert("MechanicalLoadDynamics", |v| Ok(Box::new(serde_json::from_value::<super::MechanicalLoadDynamics>(v)?)));
    m.insert("MechanicalLoadUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::MechanicalLoadUserDefined>(v)?)));
    m.insert("Model", |v| Ok(Box::new(serde_json::from_value::<super::Model>(v)?)));
    m.insert("MutualCoupling", |v| Ok(Box::new(serde_json::from_value::<super::MutualCoupling>(v)?)));
    m.insert("NonConformLoad", |v| Ok(Box::new(serde_json::from_value::<super::NonConformLoad>(v)?)));
    m.insert("NonConformLoadGroup", |v| Ok(Box::new(serde_json::from_value::<super::NonConformLoadGroup>(v)?)));
    m.insert("NonConformLoadSchedule", |v| Ok(Box::new(serde_json::from_value::<super::NonConformLoadSchedule>(v)?)));
    m.insert("NonlinearShuntCompensator", |v| Ok(Box::new(serde_json::from_value::<super::NonlinearShuntCompensator>(v)?)));
    m.insert("NonlinearShuntCompensatorPoint", |v| Ok(Box::new(serde_json::from_value::<super::NonlinearShuntCompensatorPoint>(v)?)));
    m.insert("NuclearGeneratingUnit", |v| Ok(Box::new(serde_json::from_value::<super::NuclearGeneratingUnit>(v)?)));
    m.insert("OperationalLimit", |v| Ok(Box::new(serde_json::from_value::<super::OperationalLimit>(v)?)));
    m.insert("OperationalLimitSet", |v| Ok(Box::new(serde_json::from_value::<super::OperationalLimitSet>(v)?)));
    m.insert("OperationalLimitType", |v| Ok(Box::new(serde_json::from_value::<super::OperationalLimitType>(v)?)));
    m.insert("OverexcLim2", |v| Ok(Box::new(serde_json::from_value::<super::OverexcLim2>(v)?)));
    m.insert("OverexcLimIEEE", |v| Ok(Box::new(serde_json::from_value::<super::OverexcLimIEEE>(v)?)));
    m.insert("OverexcLimX1", |v| Ok(Box::new(serde_json::from_value::<super::OverexcLimX1>(v)?)));
    m.insert("OverexcLimX2", |v| Ok(Box::new(serde_json::from_value::<super::OverexcLimX2>(v)?)));
    m.insert("OverexcitationLimiterDynamics", |v| Ok(Box::new(serde_json::from_value::<super::OverexcitationLimiterDynamics>(v)?)));
    m.insert("OverexcitationLimiterUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::OverexcitationLimiterUserDefined>(v)?)));
    m.insert("PFVArControllerType1Dynamics", |v| Ok(Box::new(serde_json::from_value::<super::PFVArControllerType1Dynamics>(v)?)));
    m.insert("PFVArControllerType1UserDefined", |v| Ok(Box::new(serde_json::from_value::<super::PFVArControllerType1UserDefined>(v)?)));
    m.insert("PFVArControllerType2Dynamics", |v| Ok(Box::new(serde_json::from_value::<super::PFVArControllerType2Dynamics>(v)?)));
    m.insert("PFVArControllerType2UserDefined", |v| Ok(Box::new(serde_json::from_value::<super::PFVArControllerType2UserDefined>(v)?)));
    m.insert("PFVArType1IEEEPFController", |v| Ok(Box::new(serde_json::from_value::<super::PFVArType1IEEEPFController>(v)?)));
    m.insert("PFVArType1IEEEVArController", |v| Ok(Box::new(serde_json::from_value::<super::PFVArType1IEEEVArController>(v)?)));
    m.insert("PFVArType2Common1", |v| Ok(Box::new(serde_json::from_value::<super::PFVArType2Common1>(v)?)));
    m.insert("PFVArType2IEEEPFController", |v| Ok(Box::new(serde_json::from_value::<super::PFVArType2IEEEPFController>(v)?)));
    m.insert("PFVArType2IEEEVArController", |v| Ok(Box::new(serde_json::from_value::<super::PFVArType2IEEEVArController>(v)?)));
    m.insert("PetersenCoil", |v| Ok(Box::new(serde_json::from_value::<super::PetersenCoil>(v)?)));
    m.insert("PhaseTapChanger", |v| Ok(Box::new(serde_json::from_value::<super::PhaseTapChanger>(v)?)));
    m.insert("PhaseTapChangerAsymmetrical", |v| Ok(Box::new(serde_json::from_value::<super::PhaseTapChangerAsymmetrical>(v)?)));
    m.insert("PhaseTapChangerLinear", |v| Ok(Box::new(serde_json::from_value::<super::PhaseTapChangerLinear>(v)?)));
    m.insert("PhaseTapChangerNonLinear", |v| Ok(Box::new(serde_json::from_value::<super::PhaseTapChangerNonLinear>(v)?)));
    m.insert("PhaseTapChangerSymmetrical", |v| Ok(Box::new(serde_json::from_value::<super::PhaseTapChangerSymmetrical>(v)?)));
    m.insert("PhaseTapChangerTable", |v| Ok(Box::new(serde_json::from_value::<super::PhaseTapChangerTable>(v)?)));
    m.insert("PhaseTapChangerTablePoint", |v| Ok(Box::new(serde_json::from_value::<super::PhaseTapChangerTablePoint>(v)?)));
    m.insert("PhaseTapChangerTabular", |v| Ok(Box::new(serde_json::from_value::<super::PhaseTapChangerTabular>(v)?)));
    m.insert("PhotoVoltaicUnit", |v| Ok(Box::new(serde_json::from_value::<super::PhotoVoltaicUnit>(v)?)));
    m.insert("PositionPoint", |v| Ok(Box::new(serde_json::from_value::<super::PositionPoint>(v)?)));
    m.insert("PostLineSensor", |v| Ok(Box::new(serde_json::from_value::<super::PostLineSensor>(v)?)));
    m.insert("PotentialTransformer", |v| Ok(Box::new(serde_json::from_value::<super::PotentialTransformer>(v)?)));
    m.insert("PowerElectronicsConnection", |v| Ok(Box::new(serde_json::from_value::<super::PowerElectronicsConnection>(v)?)));
    m.insert("PowerElectronicsUnit", |v| Ok(Box::new(serde_json::from_value::<super::PowerElectronicsUnit>(v)?)));
    m.insert("PowerElectronicsWindUnit", |v| Ok(Box::new(serde_json::from_value::<super::PowerElectronicsWindUnit>(v)?)));
    m.insert("PowerSystemResource", |v| Ok(Box::new(serde_json::from_value::<super::PowerSystemResource>(v)?)));
    m.insert("PowerSystemStabilizerDynamics", |v| Ok(Box::new(serde_json::from_value::<super::PowerSystemStabilizerDynamics>(v)?)));
    m.insert("PowerSystemStabilizerUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::PowerSystemStabilizerUserDefined>(v)?)));
    m.insert("PowerTransformer", |v| Ok(Box::new(serde_json::from_value::<super::PowerTransformer>(v)?)));
    m.insert("PowerTransformerEnd", |v| Ok(Box::new(serde_json::from_value::<super::PowerTransformerEnd>(v)?)));
    m.insert("ProprietaryParameterDynamics", |v| Ok(Box::new(serde_json::from_value::<super::ProprietaryParameterDynamics>(v)?)));
    m.insert("ProtectedSwitch", |v| Ok(Box::new(serde_json::from_value::<super::ProtectedSwitch>(v)?)));
    m.insert("Pss1", |v| Ok(Box::new(serde_json::from_value::<super::Pss1>(v)?)));
    m.insert("Pss1A", |v| Ok(Box::new(serde_json::from_value::<super::Pss1A>(v)?)));
    m.insert("Pss2B", |v| Ok(Box::new(serde_json::from_value::<super::Pss2B>(v)?)));
    m.insert("Pss2ST", |v| Ok(Box::new(serde_json::from_value::<super::Pss2ST>(v)?)));
    m.insert("Pss5", |v| Ok(Box::new(serde_json::from_value::<super::Pss5>(v)?)));
    m.insert("PssELIN2", |v| Ok(Box::new(serde_json::from_value::<super::PssELIN2>(v)?)));
    m.insert("PssIEEE1A", |v| Ok(Box::new(serde_json::from_value::<super::PssIEEE1A>(v)?)));
    m.insert("PssIEEE2B", |v| Ok(Box::new(serde_json::from_value::<super::PssIEEE2B>(v)?)));
    m.insert("PssIEEE3B", |v| Ok(Box::new(serde_json::from_value::<super::PssIEEE3B>(v)?)));
    m.insert("PssIEEE4B", |v| Ok(Box::new(serde_json::from_value::<super::PssIEEE4B>(v)?)));
    m.insert("PssPTIST1", |v| Ok(Box::new(serde_json::from_value::<super::PssPTIST1>(v)?)));
    m.insert("PssPTIST3", |v| Ok(Box::new(serde_json::from_value::<super::PssPTIST3>(v)?)));
    m.insert("PssRQB", |v| Ok(Box::new(serde_json::from_value::<super::PssRQB>(v)?)));
    m.insert("PssSB4", |v| Ok(Box::new(serde_json::from_value::<super::PssSB4>(v)?)));
    m.insert("PssSH", |v| Ok(Box::new(serde_json::from_value::<super::PssSH>(v)?)));
    m.insert("PssSK", |v| Ok(Box::new(serde_json::from_value::<super::PssSK>(v)?)));
    m.insert("PssSTAB2A", |v| Ok(Box::new(serde_json::from_value::<super::PssSTAB2A>(v)?)));
    m.insert("PssWECC", |v| Ok(Box::new(serde_json::from_value::<super::PssWECC>(v)?)));
    m.insert("Quality61850", |v| Ok(Box::new(serde_json::from_value::<super::Quality61850>(v)?)));
    m.insert("RaiseLowerCommand", |v| Ok(Box::new(serde_json::from_value::<super::RaiseLowerCommand>(v)?)));
    m.insert("RatioTapChanger", |v| Ok(Box::new(serde_json::from_value::<super::RatioTapChanger>(v)?)));
    m.insert("RatioTapChangerTable", |v| Ok(Box::new(serde_json::from_value::<super::RatioTapChangerTable>(v)?)));
    m.insert("RatioTapChangerTablePoint", |v| Ok(Box::new(serde_json::from_value::<super::RatioTapChangerTablePoint>(v)?)));
    m.insert("ReactiveCapabilityCurve", |v| Ok(Box::new(serde_json::from_value::<super::ReactiveCapabilityCurve>(v)?)));
    m.insert("RegularIntervalSchedule", |v| Ok(Box::new(serde_json::from_value::<super::RegularIntervalSchedule>(v)?)));
    m.insert("RegularTimePoint", |v| Ok(Box::new(serde_json::from_value::<super::RegularTimePoint>(v)?)));
    m.insert("RegulatingCondEq", |v| Ok(Box::new(serde_json::from_value::<super::RegulatingCondEq>(v)?)));
    m.insert("RegulatingControl", |v| Ok(Box::new(serde_json::from_value::<super::RegulatingControl>(v)?)));
    m.insert("RegulationSchedule", |v| Ok(Box::new(serde_json::from_value::<super::RegulationSchedule>(v)?)));
    m.insert("RemoteInputSignal", |v| Ok(Box::new(serde_json::from_value::<super::RemoteInputSignal>(v)?)));
    m.insert("ReportingGroup", |v| Ok(Box::new(serde_json::from_value::<super::ReportingGroup>(v)?)));
    m.insert("RotatingMachine", |v| Ok(Box::new(serde_json::from_value::<super::RotatingMachine>(v)?)));
    m.insert("RotatingMachineDynamics", |v| Ok(Box::new(serde_json::from_value::<super::RotatingMachineDynamics>(v)?)));
    m.insert("SVCControlMode", |v| Ok(Box::new(serde_json::from_value::<super::SVCControlMode>(v)?)));
    m.insert("SVCUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::SVCUserDefined>(v)?)));
    m.insert("Season", |v| Ok(Box::new(serde_json::from_value::<super::Season>(v)?)));
    m.insert("SeasonDayTypeSchedule", |v| Ok(Box::new(serde_json::from_value::<super::SeasonDayTypeSchedule>(v)?)));
    m.insert("Sensor", |v| Ok(Box::new(serde_json::from_value::<super::Sensor>(v)?)));
    m.insert("SeriesCompensator", |v| Ok(Box::new(serde_json::from_value::<super::SeriesCompensator>(v)?)));
    m.insert("ServiceLocation", |v| Ok(Box::new(serde_json::from_value::<super::ServiceLocation>(v)?)));
    m.insert("SetPoint", |v| Ok(Box::new(serde_json::from_value::<super::SetPoint>(v)?)));
    m.insert("ShuntCompensator", |v| Ok(Box::new(serde_json::from_value::<super::ShuntCompensator>(v)?)));
    m.insert("SolarGeneratingUnit", |v| Ok(Box::new(serde_json::from_value::<super::SolarGeneratingUnit>(v)?)));
    m.insert("SolarPowerPlant", |v| Ok(Box::new(serde_json::from_value::<super::SolarPowerPlant>(v)?)));
    m.insert("Statements", |v| Ok(Box::new(serde_json::from_value::<super::Statements>(v)?)));
    m.insert("StaticVarCompensator", |v| Ok(Box::new(serde_json::from_value::<super::StaticVarCompensator>(v)?)));
    m.insert("StaticVarCompensatorDynamics", |v| Ok(Box::new(serde_json::from_value::<super::StaticVarCompensatorDynamics>(v)?)));
    m.insert("StationSupply", |v| Ok(Box::new(serde_json::from_value::<super::StationSupply>(v)?)));
    m.insert("Status", |v| Ok(Box::new(serde_json::from_value::<super::Status>(v)?)));
    m.insert("StreetAddress", |v| Ok(Box::new(serde_json::from_value::<super::StreetAddress>(v)?)));
    m.insert("StreetDetail", |v| Ok(Box::new(serde_json::from_value::<super::StreetDetail>(v)?)));
    m.insert("StringMeasurement", |v| Ok(Box::new(serde_json::from_value::<super::StringMeasurement>(v)?)));
    m.insert("StringMeasurementValue", |v| Ok(Box::new(serde_json::from_value::<super::StringMeasurementValue>(v)?)));
    m.insert("SubGeographicalRegion", |v| Ok(Box::new(serde_json::from_value::<super::SubGeographicalRegion>(v)?)));
    m.insert("SubLoadArea", |v| Ok(Box::new(serde_json::from_value::<super::SubLoadArea>(v)?)));
    m.insert("Substation", |v| Ok(Box::new(serde_json::from_value::<super::Substation>(v)?)));
    m.insert("SurgeArrester", |v| Ok(Box::new(serde_json::from_value::<super::SurgeArrester>(v)?)));
    m.insert("SvInjection", |v| Ok(Box::new(serde_json::from_value::<super::SvInjection>(v)?)));
    m.insert("SvPowerFlow", |v| Ok(Box::new(serde_json::from_value::<super::SvPowerFlow>(v)?)));
    m.insert("SvShuntCompensatorSections", |v| Ok(Box::new(serde_json::from_value::<super::SvShuntCompensatorSections>(v)?)));
    m.insert("SvStatus", |v| Ok(Box::new(serde_json::from_value::<super::SvStatus>(v)?)));
    m.insert("SvSwitch", |v| Ok(Box::new(serde_json::from_value::<super::SvSwitch>(v)?)));
    m.insert("SvTapStep", |v| Ok(Box::new(serde_json::from_value::<super::SvTapStep>(v)?)));
    m.insert("SvVoltage", |v| Ok(Box::new(serde_json::from_value::<super::SvVoltage>(v)?)));
    m.insert("Switch", |v| Ok(Box::new(serde_json::from_value::<super::Switch>(v)?)));
    m.insert("SwitchSchedule", |v| Ok(Box::new(serde_json::from_value::<super::SwitchSchedule>(v)?)));
    m.insert("SynchronousMachine", |v| Ok(Box::new(serde_json::from_value::<super::SynchronousMachine>(v)?)));
    m.insert("SynchronousMachineDetailed", |v| Ok(Box::new(serde_json::from_value::<super::SynchronousMachineDetailed>(v)?)));
    m.insert("SynchronousMachineDynamics", |v| Ok(Box::new(serde_json::from_value::<super::SynchronousMachineDynamics>(v)?)));
    m.insert("SynchronousMachineEquivalentCircuit", |v| Ok(Box::new(serde_json::from_value::<super::SynchronousMachineEquivalentCircuit>(v)?)));
    m.insert("SynchronousMachineSimplified", |v| Ok(Box::new(serde_json::from_value::<super::SynchronousMachineSimplified>(v)?)));
    m.insert("SynchronousMachineTimeConstantReactance", |v| Ok(Box::new(serde_json::from_value::<super::SynchronousMachineTimeConstantReactance>(v)?)));
    m.insert("SynchronousMachineUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::SynchronousMachineUserDefined>(v)?)));
    m.insert("TapChanger", |v| Ok(Box::new(serde_json::from_value::<super::TapChanger>(v)?)));
    m.insert("TapChangerControl", |v| Ok(Box::new(serde_json::from_value::<super::TapChangerControl>(v)?)));
    m.insert("TapChangerTablePoint", |v| Ok(Box::new(serde_json::from_value::<super::TapChangerTablePoint>(v)?)));
    m.insert("TapSchedule", |v| Ok(Box::new(serde_json::from_value::<super::TapSchedule>(v)?)));
    m.insert("Terminal", |v| Ok(Box::new(serde_json::from_value::<super::Terminal>(v)?)));
    m.insert("TextDiagramObject", |v| Ok(Box::new(serde_json::from_value::<super::TextDiagramObject>(v)?)));
    m.insert("ThermalGeneratingUnit", |v| Ok(Box::new(serde_json::from_value::<super::ThermalGeneratingUnit>(v)?)));
    m.insert("TieFlow", |v| Ok(Box::new(serde_json::from_value::<super::TieFlow>(v)?)));
    m.insert("TopologicalIsland", |v| Ok(Box::new(serde_json::from_value::<super::TopologicalIsland>(v)?)));
    m.insert("TopologicalNode", |v| Ok(Box::new(serde_json::from_value::<super::TopologicalNode>(v)?)));
    m.insert("TownDetail", |v| Ok(Box::new(serde_json::from_value::<super::TownDetail>(v)?)));
    m.insert("TransformerEnd", |v| Ok(Box::new(serde_json::from_value::<super::TransformerEnd>(v)?)));
    m.insert("TurbLCFB1", |v| Ok(Box::new(serde_json::from_value::<super::TurbLCFB1>(v)?)));
    m.insert("TurbineGovernorDynamics", |v| Ok(Box::new(serde_json::from_value::<super::TurbineGovernorDynamics>(v)?)));
    m.insert("TurbineGovernorUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::TurbineGovernorUserDefined>(v)?)));
    m.insert("TurbineLoadControllerDynamics", |v| Ok(Box::new(serde_json::from_value::<super::TurbineLoadControllerDynamics>(v)?)));
    m.insert("TurbineLoadControllerUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::TurbineLoadControllerUserDefined>(v)?)));
    m.insert("URI", |v| Ok(Box::new(serde_json::from_value::<super::URI>(v)?)));
    m.insert("UnderexcLim2Simplified", |v| Ok(Box::new(serde_json::from_value::<super::UnderexcLim2Simplified>(v)?)));
    m.insert("UnderexcLimIEEE1", |v| Ok(Box::new(serde_json::from_value::<super::UnderexcLimIEEE1>(v)?)));
    m.insert("UnderexcLimIEEE2", |v| Ok(Box::new(serde_json::from_value::<super::UnderexcLimIEEE2>(v)?)));
    m.insert("UnderexcLimX1", |v| Ok(Box::new(serde_json::from_value::<super::UnderexcLimX1>(v)?)));
    m.insert("UnderexcLimX2", |v| Ok(Box::new(serde_json::from_value::<super::UnderexcLimX2>(v)?)));
    m.insert("UnderexcitationLimiterDynamics", |v| Ok(Box::new(serde_json::from_value::<super::UnderexcitationLimiterDynamics>(v)?)));
    m.insert("UnderexcitationLimiterUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::UnderexcitationLimiterUserDefined>(v)?)));
    m.insert("VAdjIEEE", |v| Ok(Box::new(serde_json::from_value::<super::VAdjIEEE>(v)?)));
    m.insert("VCompIEEEType1", |v| Ok(Box::new(serde_json::from_value::<super::VCompIEEEType1>(v)?)));
    m.insert("VCompIEEEType2", |v| Ok(Box::new(serde_json::from_value::<super::VCompIEEEType2>(v)?)));
    m.insert("VSCDynamics", |v| Ok(Box::new(serde_json::from_value::<super::VSCDynamics>(v)?)));
    m.insert("VSCUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::VSCUserDefined>(v)?)));
    m.insert("ValueAliasSet", |v| Ok(Box::new(serde_json::from_value::<super::ValueAliasSet>(v)?)));
    m.insert("ValueToAlias", |v| Ok(Box::new(serde_json::from_value::<super::ValueToAlias>(v)?)));
    m.insert("VisibilityLayer", |v| Ok(Box::new(serde_json::from_value::<super::VisibilityLayer>(v)?)));
    m.insert("VoltageAdjusterDynamics", |v| Ok(Box::new(serde_json::from_value::<super::VoltageAdjusterDynamics>(v)?)));
    m.insert("VoltageAdjusterUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::VoltageAdjusterUserDefined>(v)?)));
    m.insert("VoltageCompensatorDynamics", |v| Ok(Box::new(serde_json::from_value::<super::VoltageCompensatorDynamics>(v)?)));
    m.insert("VoltageCompensatorUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::VoltageCompensatorUserDefined>(v)?)));
    m.insert("VoltageLevel", |v| Ok(Box::new(serde_json::from_value::<super::VoltageLevel>(v)?)));
    m.insert("VoltageLimit", |v| Ok(Box::new(serde_json::from_value::<super::VoltageLimit>(v)?)));
    m.insert("VsCapabilityCurve", |v| Ok(Box::new(serde_json::from_value::<super::VsCapabilityCurve>(v)?)));
    m.insert("VsConverter", |v| Ok(Box::new(serde_json::from_value::<super::VsConverter>(v)?)));
    m.insert("WaveTrap", |v| Ok(Box::new(serde_json::from_value::<super::WaveTrap>(v)?)));
    m.insert("WindAeroConstIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindAeroConstIEC>(v)?)));
    m.insert("WindAeroOneDimIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindAeroOneDimIEC>(v)?)));
    m.insert("WindAeroTwoDimIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindAeroTwoDimIEC>(v)?)));
    m.insert("WindContCurrLimIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindContCurrLimIEC>(v)?)));
    m.insert("WindContPType3IEC", |v| Ok(Box::new(serde_json::from_value::<super::WindContPType3IEC>(v)?)));
    m.insert("WindContPType4aIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindContPType4aIEC>(v)?)));
    m.insert("WindContPType4bIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindContPType4bIEC>(v)?)));
    m.insert("WindContPitchAngleIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindContPitchAngleIEC>(v)?)));
    m.insert("WindContQIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindContQIEC>(v)?)));
    m.insert("WindContQLimIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindContQLimIEC>(v)?)));
    m.insert("WindContQPQULimIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindContQPQULimIEC>(v)?)));
    m.insert("WindContRotorRIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindContRotorRIEC>(v)?)));
    m.insert("WindDynamicsLookupTable", |v| Ok(Box::new(serde_json::from_value::<super::WindDynamicsLookupTable>(v)?)));
    m.insert("WindGenTurbineType1aIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindGenTurbineType1aIEC>(v)?)));
    m.insert("WindGenTurbineType1bIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindGenTurbineType1bIEC>(v)?)));
    m.insert("WindGenTurbineType2IEC", |v| Ok(Box::new(serde_json::from_value::<super::WindGenTurbineType2IEC>(v)?)));
    m.insert("WindGenType3IEC", |v| Ok(Box::new(serde_json::from_value::<super::WindGenType3IEC>(v)?)));
    m.insert("WindGenType3aIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindGenType3aIEC>(v)?)));
    m.insert("WindGenType3bIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindGenType3bIEC>(v)?)));
    m.insert("WindGenType4IEC", |v| Ok(Box::new(serde_json::from_value::<super::WindGenType4IEC>(v)?)));
    m.insert("WindGeneratingUnit", |v| Ok(Box::new(serde_json::from_value::<super::WindGeneratingUnit>(v)?)));
    m.insert("WindMechIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindMechIEC>(v)?)));
    m.insert("WindPitchContPowerIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindPitchContPowerIEC>(v)?)));
    m.insert("WindPlantDynamics", |v| Ok(Box::new(serde_json::from_value::<super::WindPlantDynamics>(v)?)));
    m.insert("WindPlantFreqPcontrolIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindPlantFreqPcontrolIEC>(v)?)));
    m.insert("WindPlantIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindPlantIEC>(v)?)));
    m.insert("WindPlantReactiveControlIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindPlantReactiveControlIEC>(v)?)));
    m.insert("WindPlantUserDefined", |v| Ok(Box::new(serde_json::from_value::<super::WindPlantUserDefined>(v)?)));
    m.insert("WindPowerPlant", |v| Ok(Box::new(serde_json::from_value::<super::WindPowerPlant>(v)?)));
    m.insert("WindProtectionIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindProtectionIEC>(v)?)));
    m.insert("WindRefFrameRotIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindRefFrameRotIEC>(v)?)));
    m.insert("WindTurbineType1or2Dynamics", |v| Ok(Box::new(serde_json::from_value::<super::WindTurbineType1or2Dynamics>(v)?)));
    m.insert("WindTurbineType1or2IEC", |v| Ok(Box::new(serde_json::from_value::<super::WindTurbineType1or2IEC>(v)?)));
    m.insert("WindTurbineType3IEC", |v| Ok(Box::new(serde_json::from_value::<super::WindTurbineType3IEC>(v)?)));
    m.insert("WindTurbineType3or4Dynamics", |v| Ok(Box::new(serde_json::from_value::<super::WindTurbineType3or4Dynamics>(v)?)));
    m.insert("WindTurbineType3or4IEC", |v| Ok(Box::new(serde_json::from_value::<super::WindTurbineType3or4IEC>(v)?)));
    m.insert("WindTurbineType4IEC", |v| Ok(Box::new(serde_json::from_value::<super::WindTurbineType4IEC>(v)?)));
    m.insert("WindTurbineType4aIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindTurbineType4aIEC>(v)?)));
    m.insert("WindTurbineType4bIEC", |v| Ok(Box::new(serde_json::from_value::<super::WindTurbineType4bIEC>(v)?)));
    m.insert("WindType1or2UserDefined", |v| Ok(Box::new(serde_json::from_value::<super::WindType1or2UserDefined>(v)?)));
    m.insert("WindType3or4UserDefined", |v| Ok(Box::new(serde_json::from_value::<super::WindType3or4UserDefined>(v)?)));
    m.insert("WorkLocation", |v| Ok(Box::new(serde_json::from_value::<super::WorkLocation>(v)?)));
    m
}