Especially, explain the usage of NullGuard.Fody, and the helper classes `RequireClass<T>` and `RequireStruct<T>`.