@BenMorel Agree, but how you think `getBody()` should choose which class implementing `BodyInterface` should be returned if there are several classes implementing this interface in the library? Returning in form `return new Body(...);`, etc. could lead to inflexibility.
Also, there are HTTP headers to describe message body content type and length. These could be used in implementation to decide how body should be returned.