+ } else {
+ aggregate = alloc.Alloc(sizeof(char *) * arraySize);
+ char *iter = aggregate;
+ const vector<string> &list(i->second->GetLiteral().GetIdentifiers());
+ for (vector<string>::const_iterator j(list.begin()), end(list.end()); j != end; ++j, iter += sizeof(void *)) {
+ if (source.IsDefined(*j)) {
+ *reinterpret_cast<void **>(iter)
+ = GetObject(fd.TypeId(), *j);
+ } else {
+ Postpone(typeId, id, fd.Offset() + (iter - aggregate), *j, fd.TypeId(), false);
+ }
+ }