support collections with custom Add method, enum types with ignorable default value