
Reddit brought something wonderful again. This is actual material3 code. Here you see a unique Deprecated Experimental function. The pinnacle of Googleness.
I can imagine why they do this. Like so that even people who are on experimental annotations could live for some number of versions without obligation from Google, otherwise they'll howl. With Compose btw you can't work at all without experimental annotations, that's our norm.
But even that doesn't really convince me. From my point of view as a user Experimental and Deprecated are directly opposite things. The first is about the code being too new and may change, and the second is about the code being too old and may be removed.
I would even say that Experimental is an unnecessary entity in general. Nothing stops you as a library author from deprecating stable code too. Often they do. And this is an attempt to sit on two chairs. You either come to terms with what you wrote, or think again and write it properly, without safety net in the form of annotations that we're all forced to use anyway.

To top it off, this is code from the same file. 43 (forty-three) parameters in a function. Maybe I'm too conservative here, but isn't that overkill? 😒
On average the whole Compose UI is like that. Take some TextField - 19 parameters. Text - 16 parameters. Finding a component with less than 5 parameters in a function is almost impossible. In Compose, all the complexity of component configuration moved from class fields and attributes to function parameters. And it seems to me that this is rather bad than good. Tools, IDE, code styles, all this needs to be refined somehow, because before such functions were a disgrace, nobody laid anything under this.
A couple weeks ago there was a fight on Twitter, where a person got roasted for the signature of his screen function. Everyone there in chorus said that there's too much, that you need to split into subcomponents, that you need to make slots in the parents. And this, of course, is a way to solve this problem, that's what you need to do. But this way is such, for the time being. If you have a component slightly more complex than just a container for several subcomponents, then it will still grow parameters anyway.