If a class declare a member of the same class Type you get a mapping error.
Possible change in BsonClassMap.cs (all tests passed):
/// <summary>
/// Registers a class map.
/// </summary>
/// <param name="classMap">The class map.</param>
public static void RegisterClassMap(
BsonClassMap classMap
) {
lock (BsonSerializer.ConfigLock) {
// note: class maps can NOT be replaced (because derived classes refer to existing instance)
// classMaps.Add(classMap.ClassType, classMap); ORIGINAL
if (!classMaps.ContainsKey(classMap.ClassType))
}
}