//hash code trait
 public override int GetHashCode()
 {
     unchecked {
         var hash = 0;
         hash = hash * 31 + IsDefaultBeatSaberLocation.GetHashCode();
         hash = hash * 31 + (DefaultBeatSaberLocation != null ? DefaultBeatSaberLocation.GetHashCode() : 0);
         hash = hash * 31 + ConfiguredBeatSaberLocations.ContentHashCode();
         return(hash);
     }
 }
 //pretty print
 public void Print(PrettyPrinter printer)
 {
     printer.Println("ConfigSettings (");
     using (printer.IndentCookie()) {
         printer.Print("isDefaultBeatSaberLocation = "); IsDefaultBeatSaberLocation.PrintEx(printer); printer.Println();
         printer.Print("defaultBeatSaberLocation = "); DefaultBeatSaberLocation.PrintEx(printer); printer.Println();
         printer.Print("configuredBeatSaberLocations = "); ConfiguredBeatSaberLocations.PrintEx(printer); printer.Println();
     }
     printer.Print(")");
 }
 public bool Equals(ConfigSettings other)
 {
     if (ReferenceEquals(null, other))
     {
         return(false);
     }
     if (ReferenceEquals(this, other))
     {
         return(true);
     }
     return(IsDefaultBeatSaberLocation == other.IsDefaultBeatSaberLocation && Equals(DefaultBeatSaberLocation, other.DefaultBeatSaberLocation) && ConfiguredBeatSaberLocations.SequenceEqual(other.ConfiguredBeatSaberLocations));
 }