public static TRequest ReRequest <TRequest>([NotNull] this ResponseBase <TRequest> response) where TRequest : RequestBase, IReRequestable { String etag; if (response.DoesProvideEtagt(out etag)) { response.OriginalRequest.ETag = etag; return(response.OriginalRequest); } throw new ResponseDoesNotProvideEtagException(response); }