@discardableResult annotations became suddenly ineffective.
Abstraction was overcomplicated. Strategy pattern is enough.