<html>
  <head>
    <meta content="text/html; charset=windows-1252"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    Hi Brian,<br>
    <br>
    <div class="moz-cite-prefix">On 02/15/2016 07:11 PM, Brian Goetz
      wrote:<br>
    </div>
    <blockquote
      cite="mid:F716FD1E-33D0-4C4A-83BD-3BFE466B17AF@oracle.com"
      type="cite">
      <div><font face="Menlo">Example:<br>
          <br>
          class Collection<any T> {<br>
             private __SS Collection<T> emptyCollection = …<br>
             // ACC_SS field emptyCollection : ParamType[Collection,
          TypeVar[T]]<br>
          <br>
             private __SS Collection<T> emptyCollection() { return
          emptyCollection; }<br>
             ACC_SS emptyCollection()ParamType[Collection, TypeVar[T]] {<br>
                 getstatic ParamType[Collection,
          TypeVar[T]].emptyCollection : ParamType[Collection,
          TypeVar[T]]]<br>
                 areturn<br>
             }<br>
          <br>
          When we specialize Collection<int>, the field type,
          method return type, etc, will all collapse to
          Collection<int> by the existing mechanisms.</font></div>
    </blockquote>
    <br>
    This would work if the <font face="Menlo">emptyCollection was
      actually empty and immutable, but could you do the following:<br>
      <br>
      class Collection<any T> {<br>
         private __SS Collection<T>collection = new
      ArrayList<T>();</font><font face="Menlo"><br>
      <br>
         public __SS Collection<T> collection() { return </font><font
      face="Menlo"><font face="Menlo">collection</font>; }</font><font
      face="Menlo"><br>
      }<br>
      <br>
      <br>
      And then in code:<br>
      <br>
      Collection<String> cs =
      Collection<String>.collection();<br>
      Collection<Number> cn =
      Collection<Number>.collection();<br>
      <br>
      cs.add("abc");<br>
      Number n = cn.iterator().next();<br>
    </font><font face="Menlo"><br>
      If cs and cn hold the same instance, we have introduced heap
      corruption without compilation warnings.<br>
      <br>
      So I suppose in language you could only access the _SS members in
      the following way:<br>
      <br>
      Collection<?>.collection();<br>
      Collection<int>.collection();<br>
      Collection<long>.collection();<br>
      Collection<ValueType>.collection();<br>
      ...<br>
      <br>
      but not:<br>
      <br>
      Collection<Object>.collection();<br>
      Collection<String>.collection();<br>
      ...<br>
      <br>
      <br>
      Like .class literals in the prototype.<br>
      <br>
      Regards, Peter<br>
      <br>
      <br>
    </font>
  </body>
</html>