public GenDataBase AsGenDataBase() { var f = CreateMinimal(); var d = new GenDataBase(f) { DataName = DefinitionName }; var a = new GenAttributes(f, 1); for (var i = 1; i < Classes.Count; i++) { if (!string.IsNullOrEmpty(Classes[i].ReferenceDefinition)) { continue; } var @class = d.Root.CreateGenObject("Class"); a.GenObject = @class; var c = Classes[i]; a.SetString("Name", c.Name); a.SaveFields(); foreach (var inheritor in c.Inheritors) { a.GenObject = @class.CreateGenObject("SubClass"); var inheritorId = inheritor.ClassId; a.SetString("Name", Classes[inheritorId].Name); a.SetString("Relationship", "Extends"); a.SaveFields(); a.GenObject = ((GenObject)a.GenObject).Parent; a.SetString("Inheritance", "Abstract"); a.SaveFields(); } foreach (var subClass in c.SubClasses) { a.GenObject = @class.CreateGenObject("SubClass"); var sc = subClass.SubClass; a.SetString("Name", sc.Name); a.SetString("Reference", sc.Reference); a.SaveFields(); } foreach (var property in c.InstanceProperties) { a.GenObject = @class.CreateGenObject("Property"); a.SetString("Name", property); a.SaveFields(); } } return(d); }