private CSharpType?CreateInheritedType() { var sourceBaseType = ExistingType?.BaseType; if (sourceBaseType != null && sourceBaseType.SpecialType != SpecialType.System_ValueType && sourceBaseType.SpecialType != SpecialType.System_Object && _typeFactory.TryCreateType(sourceBaseType, out CSharpType? baseType)) { return(baseType); } var objectSchemas = _objectSchema.Parents !.Immediate.OfType <ObjectSchema>().ToArray(); ObjectSchema?selectedSchema = null; foreach (var objectSchema in objectSchemas) { // Take first schema or the one with discriminator selectedSchema ??= objectSchema; if (objectSchema.Discriminator != null) { selectedSchema = objectSchema; break; } } if (selectedSchema != null) { CSharpType type = _typeFactory.CreateType(selectedSchema, false); Debug.Assert(!type.IsFrameworkType); return(type); } return(null); }