public void Unpublish(UpgradeableRecord record)
 {
     records.Remove(record);
     foreach (var client in clients)
     {
         client.RecordRemoved(record);
     }
 }
 public override void RecordRemoved(UpgradeableRecord record)
 {
     if (record.BindingKey() != key)
     {
         return;
     }
     Remove(record.BindingKey());
 }
 public void Publish(UpgradeableRecord record)
 {
     records.Add(record);
     foreach (var client in clients)
     {
         client.RecordAdded(record);
     }
 }
 public override void RecordAdded(UpgradeableRecord record)
 {
     if (record.BindingKey() != key)
     {
         return;
     }
     Apply((AnimationCurveUpgradeableRecord)record);
 }
 public override void RecordAdded(UpgradeableRecord record)
 {
     if (record.BindingKey() != key)
     {
         return;
     }
     Apply((FloatUpgradeableRecord)record);
 }
 public abstract void RecordRemoved(UpgradeableRecord record);
 public abstract void RecordAdded(UpgradeableRecord record);