anchor.diff:  
       // Handles Nickname Changes
       register((NickChangeEvent event) {
  -      if (event.original == _nickname) {
  +      getUser(event.original).nickname = event.now;
  +      // TODO: I don't think we need this anymore, since we're object-based.
  +      /*if (event.original == _nickname) {
           _nickname = event.now;
         } else {
           for (Channel channel in channels) {
  -          void m(Set<String> list) {
  +          void m(Set<User> list) {
               if (list.contains(event.original)) {
                 list.remove(event.original);
                 list.add(event.now);
  
positive.code:     });
  
      /* Handles User Tracking in Channels when a user joins. A user is a member until it is changed. */
      register((JoinEvent event) => event.channel.members.add(getUser(event.user)));
  
      // Handles User Tracking in Channels when a user leaves
      register((PartEvent event) {
        var channel = event.channel;
        channel.members.remove(event.user);
        channel.voices.remove(event.user);
        channel.ops.remove(event.user);
        channel.owners.remove(event.user);
        channel.halfops.remove(event.user);
      });
  
      // Handles User Tracking in Channels when a user is kicked.
      register((KickEvent event) {
        var channel = event.channel;
        channel.members.remove(event.user);
        channel.voices.remove(event.user);
        channel.ops.remove(event.user);
        channel.owners.remove(event.user);
        channel.halfops.remove(event.user);
        if (event.user == nickname) {
          channels.remove(channel);
        }
  
negative.code:           m(channel.halfops);
            m(channel.owners);
          }
        }*/
      });
  
      // Handles Channel User Tracking
  