private Offset <Person> WritePerson(PersonInstance value) { VectorOffset parentVector = new VectorOffset(); if (value.parent != null) { var persons = new Offset <Person> [value.parent.Count]; int index = 0; foreach (var person in value.parent) { persons[index] = WritePerson(person); index++; } parentVector = Person.CreateParentVector(_builder, persons); } VectorOffset worksVector = new VectorOffset(); if (value.Works.Count > 0) { var works = new Offset <Work> [value.Works.Count]; int index = 0; foreach (var work in value.Works) { works[index] = WriteWork(work); index++; } worksVector = Work.CreateSortedVectorOfWork(_builder, works); } VectorOffset nickNamesVector = new VectorOffset(); if (value.NickNames.Count > 0) { var nickNames = new Offset <NickName> [value.NickNames.Count]; int index = 0; foreach (var nickName in value.NickNames) { nickNames[index] = WriteNickName(nickName); index++; } nickNamesVector = NickName.CreateSortedVectorOfNickName(_builder, nickNames); } var name = WriteString(value.name); Person.StartPerson(_builder); Person.AddName(_builder, name); if (value.parent != null) { Person.AddParent(_builder, parentVector); } if (value.Works.Count > 0) { Person.AddWorks(_builder, worksVector); } if (value.NickNames.Count > 0) { Person.AddNickNames(_builder, nickNamesVector); } return(Person.EndPerson(_builder)); }