Entrada "! *" Estranha em LocalVariableTypeTable ao compilar com o compilador eclipse

Vamos compilar o seguinte código com o compilador ECJ do pacote Eclipse Mars.2:

import java.util.stream.*;

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

O comando de compilação é o seguinte:

$ java -jar org.eclipse.jdt.core_3.11.2.v20160128-0629.jar -8 -g Test.java

Após a compilação bem-sucedida, vamos verificar o arquivo de classe resultante comjavap -v -p Test.class. O mais interessante é o método sintético gerado para o(a, t) -> {} lambda:

  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   !*

Fiquei bastante surpreso ao ver isso!* entrada emLocalVariableTypeTable. Especificação JVMcobre Atributo LocalVariableTypeTable e diz:

oconstant_pool A entrada nesse índice deve conter umCONSTANT_Utf8_info estrutura (§4.4.7) representando uma assinatura de campo que codifica o tipo de uma variável local no programa de origem (§4.7.9.1)

§4.7.9.1 define uma gramática para assinaturas de campo que, se bem entendi, não cobre algo semelhante a!*.

Note-se também que nem o compilador javac nem as versões anteriores do ECJ 3.10.x geram esseLocalVariableTypeTable entrada. É!* alguma extensão não-padrão do Eclipse ou estou faltando alguma coisa nas especificações da JVM? Isso significa que o ECJ não está em conformidade com as especificações da JVM? o que!* realmente significa e existem outras seqüências semelhantes que podem aparecer emLocalVariableTypeTable atributo?

questionAnswers(1)

yourAnswerToTheQuestion