<div dir="ltr">To give what (I think) is more the kind of feedback that would be helpful:<br><br>I've been playing around with this library - <a href="http://github.com/bowbahdoe/java-type-classes">github.com/bowbahdoe/java-type-classes</a>. Finer points aside, it seems comparable to the planned language feature. What I am struggling with is when I would actually **want** to register witnesses for a typeclass.<br><br>Take comparator for instance. If I am making a Point class I can register a witness for Comparator<Point>.<br><br><font face="monospace">public record Point(int x, int y) {</font><br><font face="monospace">    @TypeClass.Witness</font><br><font face="monospace">    public static Comparator<Point> comparator() {</font><br><font face="monospace">        return Comparator.comparingInt(Point::x).thenComparingInt(Point::y);</font><br><font face="monospace">    }</font><br><font face="monospace">}</font><br><br><font face="arial, sans-serif">And then I can summon that witness later<br><br></font><font face="monospace">import com.garciat.typeclasses.TypeClasses;<br>import com.garciat.typeclasses.api.Ty;<br><br>void main() {<br>    var points = new ArrayList<Point>();<br>    points.add(new Point((int) (Math.random() * 15), (int) (Math.random() * 15)));<br>    points.add(new Point((int) (Math.random() * 15), (int) (Math.random() * 15)));<br>    points.add(new Point((int) (Math.random() * 15), (int) (Math.random() * 15)));<br><br>    IO.println(points);<br><br>    points.sort(TypeClasses.witness(new Ty<Comparator<Point>>() {}));<br>    IO.println(points);<br>}</font><font face="arial, sans-serif"></font><div><font face="monospace"><br></font></div><div><font face="arial, sans-serif">But, I am already referencing the Point class directly. Syntax aside, I'm not sure why I would bother interacting with typeclasses at all when I can just write </font><font face="monospace">Point.comparator(); </font><font face="arial, sans-serif">or (for this specific interface) making it implement Comparable.</font></div><div><font face="arial, sans-serif"><br></font></div><div><font face="arial, sans-serif">Really if I am touching comparators at all I will end up writing things like </font><font face="monospace">Point.comparingX();</font><font face="arial, sans-serif"> and </font><font face="monospace">Point.comparingY();</font></div></div><br><div class="gmail_quote gmail_quote_container"><div dir="ltr" class="gmail_attr">On Fri, Jan 30, 2026 at 7:01 PM Steffen Yount <<a href="mailto:steffenyount@gmail.com">steffenyount@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">no problem.<br>
<br>
On Fri, Jan 30, 2026 at 3:22 PM Ron Pressler <<a href="mailto:ron.pressler@oracle.com" target="_blank">ron.pressler@oracle.com</a>> wrote:<br>
><br>
> Oh, I apologise!<br>
><br>
> > On 30 Jan 2026, at 22:20, Steffen Yount <<a href="mailto:steffenyount@gmail.com" target="_blank">steffenyount@gmail.com</a>> wrote:<br>
> ><br>
> > For what it's worth, the recent "Java Language Enhancement: Disallow<br>
> > access to static members via object references" thread and suggestions<br>
> > there weren't mine. My first and otherwise most recent foray into<br>
> > engaging with you guys on this list was way back in late 2023.<br>
> ><br>
> > On Fri, Jan 30, 2026 at 1:05 PM Ron Pressler <<a href="mailto:ron.pressler@oracle.com" target="_blank">ron.pressler@oracle.com</a>> wrote:<br>
> >><br>
> >> P.S.<br>
> >><br>
> >> Your previous suggestion about turning some warning into an error suffered the same flaw. All it said was that the pattern is potentially confusing. But that’s why there’s a warning. That’s not how to motivate turning a warning into an error. What is the problem with the warning? Is it that your team don’t turn it on? Do you turn it on but ignore it? Why is it that particular warning that merits becoming an error? Are the problems caused by it particularly serious?<br>
> >><br>
> >> Without clearly stating what the problem you wish to solve is, it’s hard to judge the merit of any solution.<br>
> >><br>
> >> If you look at our JEPs, they start with a motivation section. That’s the first step: clearly identify a problem and explain why it’s an important one for the platform to solve.<br>
> >><br>
> >> It’s very important for us to know what problems people encounter, and we appreciate such reports, but if you don’t tell us exactly what the problem is we can’t help.<br>
> >><br>
> >> — Ron<br>
</blockquote></div>