If a field uses a direct generic declaration instead of a wrapper class the default values of the class are ignored. Took me a while to find this bug since it is affecting users of my assets.
Here’s a quick example:

Notice how the values are not the same, here’s the example code:
[Serializable]
public class AbstractClass
{
[SerializeField]
int value = 15;
public AbstractClass(int newValue = 7)
{
value = newValue;
}
}
[Serializable]
public class GenericClass<T> : AbstractClass
{
public GenericClass(int newValue = 7) : base(newValue) { }
[SerializeField]
T genericValue;
[SerializeField]
int defaultValueInGeneric = 15;
}
public class NewBehaviourScript : MonoBehaviour
{
[Serializable]
class Inherited : GenericClass<bool> { }
[SerializeField]
GenericClass<bool> testGeneric;
[SerializeField]
Inherited testInherited;
}