private void TimeFlagsTextBox_TextChanged(object sender, EventArgs e)
 {
     if (populatingui)
     {
         return;
     }
     if (CurrentArchetype == null)
     {
         return;
     }
     if (CurrentArchetype is TimeArchetype TimeArchetype)
     {
         uint flags = 0;
         uint.TryParse(TimeFlagsTextBox.Text, out flags);
         populatingui = true;
         for (int i = 0; i < TimeFlagsCheckedListBox.Items.Count; i++)
         {
             var c = ((flags & (1u << i)) > 0);
             TimeFlagsCheckedListBox.SetItemCheckState(i, c ? CheckState.Checked : CheckState.Unchecked);
         }
         populatingui = false;
         lock (ProjectForm.ProjectSyncRoot)
         {
             if (TimeArchetype.TimeFlags != flags)
             {
                 TimeArchetype.SetTimeFlags(flags);
                 ProjectForm.SetYtypHasChanged(true);
             }
         }
     }
 }
 private void TimeFlagsCheckedListBox_ItemCheck(object sender, ItemCheckEventArgs e)
 {
     if (populatingui)
     {
         return;
     }
     if (CurrentArchetype == null)
     {
         return;
     }
     if (CurrentArchetype is TimeArchetype TimeArchetype)
     {
         uint flags = 0;
         for (int i = 0; i < TimeFlagsCheckedListBox.Items.Count; i++)
         {
             if (e.Index == i)
             {
                 if (e.NewValue == CheckState.Checked)
                 {
                     flags += (uint)(1 << i);
                 }
             }
             else
             {
                 if (TimeFlagsCheckedListBox.GetItemChecked(i))
                 {
                     flags += (uint)(1 << i);
                 }
             }
         }
         populatingui          = true;
         TimeFlagsTextBox.Text = flags.ToString();
         populatingui          = false;
         lock (ProjectForm.ProjectSyncRoot)
         {
             if (TimeArchetype.TimeFlags != flags)
             {
                 TimeArchetype.SetTimeFlags(flags);
                 ProjectForm.SetYtypHasChanged(true);
             }
         }
     }
 }