It's very unclear to me when a user must calll DecRef and must not call DecRef. We should provide a consistent rule to avoid memory leaks.
In this kind of library, a user generally needs to call DecRef on every object returned from any function. Although it increases code size, it's a lot safer than providing inconsistent rules.