public void SetStructFieldAssigned(DefiniteAssignmentBitSet vector, string field_name) { if (vector[Offset]) { return; } int field_idx = TypeInfo.GetFieldIndex(field_name); if (field_idx == 0) { return; } var complex_field = TypeInfo.GetStructField(field_name); if (complex_field != null) { vector.Set(Offset + complex_field.Offset, complex_field.TotalLength); } else { vector.Set(Offset + field_idx); } IsEverAssigned = true; // // Each field must be assigned before setting master bit // for (int i = Offset + 1; i < TypeInfo.TotalLength + Offset; i++) { if (!vector[i]) { return; } } // // Set master struct flag to assigned when all tested struct // fields have been assigned // vector.Set(Offset); }