Free except for you've written 3x as much code and it's 10x harder to understand.
Don't know about harder to understand, the entire point is to remove confusing implementation details from callers.
In my experience enterprisy abstractions are a lot of motion without any progress. They impede change and stymie understanding.
The cynical part of me thinks that is the whole point.