Strange "!*" entry in LocalVariableTypeTable when compiling with eclipse compiler : <p>Let's compile the following code with ECJ compiler from Eclipse Mars.2 bundle:</p>

<pre><code>import java.util.stream.*;

public class Test {
    String test(Stream&lt;?&gt; s) {
        return s.collect(Collector.of(() -&gt; "", (a, t) -&gt; {}, (a1, a2) -&gt; a1));
    }
}
</code></pre>

<p>The compilation command is the following:</p>

<p><code>$ java -jar org.eclipse.jdt.core_3.11.2.v20160128-0629.jar -8 -g Test.java</code></p>

<p>After the successful compilation let's check the resulting class file with <code>javap -v -p Test.class</code>. The most interesting is the synthetic method generated for the <code>(a, t) -&gt; {}</code> lambda:</p>

<pre><code>  private static void lambda$1(java.lang.String, java.lang.Object);
    descriptor: (Ljava/lang/String;Ljava/lang/Object;)V
    flags: ACC_PRIVATE, ACC_STATIC, ACC_SYNTHETIC
    Code:
      stack=0, locals=2, args_size=2
         0: return
      LineNumberTable:
        line 5: 0
      LocalVariableTable:
        Start  Length  Slot  Name   Signature
            0       1     0     a   Ljava/lang/String;
            0       1     1     t   Ljava/lang/Object;
      LocalVariableTypeTable:
        Start  Length  Slot  Name   Signature
            0       1     1     t   !*
</code></pre>

<p>I was quite surprised to see this <code>!*</code> entry in <code>LocalVariableTypeTable</code>. JVM specification <a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.14" rel="noreferrer">covers</a> LocalVariableTypeTable attribute and says:</p>

<blockquote>
  <p>The <code>constant_pool</code> entry at that index must contain a <code>CONSTANT_Utf8_info</code> structure (<a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.4.7" rel="noreferrer">§4.4.7</a>) representing a field signature which encodes the type of a local variable in the source program (<a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.9.1" rel="noreferrer">§4.7.9.1</a>). </p>
</blockquote>

<p><a href="http://docs.oracle.com/javase/specs/jvms/se8/html/jvms-4.html#jvms-4.7.9.1" rel="noreferrer">§4.7.9.1</a> defines a grammar for field signatures which, if I understand correctly, does not cover anything similar to <code>!*</code>.</p>

<p>It should also be noted that neither javac compiler, nor older ECJ 3.10.x versions generate this <code>LocalVariableTypeTable</code> entry. Is <code>!*</code> some non-standard Eclipse extension or I'm missing something in JVM spec? Does this mean that ECJ does not conform to JVM spec? What <code>!*</code> actually mean and are there any other similar strings which could appear in <code>LocalVariableTypeTable</code> attribute?</p>
