code: func (t *VLANsTable) computeChanges(c context.Context, vlans []*config.VLAN) {
  	cfgs := make(map[int64]*VLAN, len(vlans))
  	for _, cfg := range vlans {
  		cfgs[cfg.Id] = &VLAN{
  			VLAN: config.VLAN{
  				Id:        cfg.Id,
  				Alias:     cfg.Alias,
  				State:     cfg.State,
  				CidrBlock: cfg.CidrBlock,
  			},
  		}
  	}
  
  	for _, vlan := range t.current {
  		if cfg, ok := cfgs[vlan.Id]; ok {
  			// VLAN found in the config.
  			if t.needsUpdate(vlan, cfg) {
  				// VLAN doesn't match the config.
  				t.updates = append(t.updates, cfg)
  			}
  			// Record that the VLAN config has been seen.
  			delete(cfgs, cfg.Id)
  		} else {
  			// VLAN not found in the config.
  			t.removals = append(t.removals, vlan)
  		}
  	}
  
  	// VLANs remaining in the map are present in the config but not the database.
  	// Iterate deterministically over the slice to determine which VLANs need to be added.
  	for _, cfg := range vlans {
  		if p, ok := cfgs[cfg.Id]; ok {
  			t.additions = append(t.additions, p)
  		}
  	}
  }
docs: // computeChanges computes the changes that need to be made to the VLANs in the database.