sviperll / adt4j

adt4j - Algebraic Data Types for Java
BSD 3-Clause "New" or "Revised" License
143 stars 8 forks source link

Mixing ADT4j and Immutables: Strange jcodemodel issue mixing generated classes #40

Closed talios closed 7 years ago

talios commented 8 years ago

For some reason, when I updated one of our ADT4j (3.1) based types to include a reference to an interface that's built using immutables.github.io ( generated in the same project ) the following deep internal error occurs.

If I use the ImmutableNNNN generated variant of the class the problem goes away, but then just causes issues further in the code base.

It looks like ADT4j may not be not liking that Immutables use inner-interfaces.

[ERROR] java.lang.IllegalStateException: Inner class should always be defined if outer class is defined: inner class org.immutables.value.Value.Immutable, enclosing class com.helger.jcodemodel.JDefinedClass(org.immutables.value.Value) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.getClass(DecidedErrorTypesModelsAdapter.java:177) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.ref(DecidedErrorTypesModelsAdapter.java:289) [ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:143) [ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:68) [ERROR] at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:944) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.toJType(DecidedErrorTypesModelsAdapter.java:298) [ERROR] at com.helger.jcodemodel.meta.Annotator.annotate(Annotator.java:97) [ERROR] at com.helger.jcodemodel.meta.Annotator.annotate(Annotator.java:89) [ERROR] at com.helger.jcodemodel.meta.ClassFiller.fillClass(ClassFiller.java:85) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineTopLevelClass(DecidedErrorTypesModelsAdapter.java:227) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineClass(DecidedErrorTypesModelsAdapter.java:191) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.getClass(DecidedErrorTypesModelsAdapter.java:161) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.ref(DecidedErrorTypesModelsAdapter.java:289) [ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:143) [ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:68) [ERROR] at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:944) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.toJType(DecidedErrorTypesModelsAdapter.java:298) [ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:146) [ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:68) [ERROR] at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:944) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.toJType(DecidedErrorTypesModelsAdapter.java:298) [ERROR] at com.helger.jcodemodel.meta.ClassFiller.fillClass(ClassFiller.java:143) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineTopLevelClass(DecidedErrorTypesModelsAdapter.java:227) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineClass(DecidedErrorTypesModelsAdapter.java:191) [ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.getClass(DecidedErrorTypesModelsAdapter.java:161) [ERROR] at com.helger.jcodemodel.meta.JCodeModelJavaxLangModelAdapter.getClass(JCodeModelJavaxLangModelAdapter.java:145) [ERROR] at com.helger.jcodemodel.meta.JCodeModelJavaxLangModelAdapter.getClassWithErrorTypes(JCodeModelJavaxLangModelAdapter.java:109) [ERROR] at com.github.sviperll.adt4j.GenerateValueClassForVisitorProcessor$ElementProcessor.processStage0(GenerateValueClassForVisitorProcessor.java:202) [ERROR] at com.github.sviperll.adt4j.GenerateValueClassForVisitorProcessor$ElementProcessor.generateClassesWithErrors(GenerateValueClassForVisitorProcessor.java:127) [ERROR] at com.github.sviperll.adt4j.GenerateValueClassForVisitorProcessor$ElementProcessor.generateClassesWithoutErrors(GenerateValueClassForVisitorProcessor.java:139) [ERROR] at com.github.sviperll.adt4j.GenerateValueClassForVisitorProcessor.process(GenerateValueClassForVisitorProcessor.java:109) [ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794) [ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705) [ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91) [ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035) [ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176) [ERROR] at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170) [ERROR] at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856) [ERROR] at com.sun.tools.javac.main.Main.compile(Main.java:523) [ERROR] at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129) [ERROR] at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138) [ERROR] at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:125) [ERROR] at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:171) [ERROR] at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:886) [ERROR] at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129) [ERROR] at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:207) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) [ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80) [ERROR] at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51) [ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128) [ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307) [ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193) [ERROR] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106) [ERROR] at org.apache.maven.cli.MavenCli.execute(MavenCli.java:863) [ERROR] at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:288) [ERROR] at org.apache.maven.cli.MavenCli.main(MavenCli.java:199) [ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) [ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) [ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) [ERROR] at java.lang.reflect.Method.invoke(Method.java:498) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415) [ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356) [ERROR] -> [Help 1]

sviperll commented 8 years ago

Can you test it with 3.2-alpha1? I think the actual error is that adt4j tries to generate new class with the name of some existing class.

The error is like that, because adt4 tries to access some inner class. There are two classes with the same name simultaneously. To access inner class adt4j first access it's enclosing class, but it chooses wrong, and as a result get confused as there is no inner class there...

talios commented 8 years ago

I tried it with the alpha that's currently released but got the same issue. Interestingly it even happened when the ADT4j class contained a class that inturn included an Immutables class - so it indirectly hit the issue as well.

sviperll commented 8 years ago

Can you submit any small example?

talios commented 8 years ago

I'll try and make a reproducible example project later this morning once I get to the office.

talios commented 8 years ago

https://github.com/talios/adt4j-immtuables-broken

sviperll commented 8 years ago

Should be fixed when jcodemodel pull request is merged.

sviperll commented 8 years ago

Finally this issue should be fixed with new jcodemodel release. Check out 3.2-beta1 version.

sviperll commented 8 years ago

As an advertisment, There is some new stuff in 3.2 release, you can find it interesting:

Since 3.2

rouzwawi commented 8 years ago

I'm adding to this issue as we're seeing an issue with AutoValue, even when using 3.2-beta1.

This happens when we have a @AutoValue annotated type with an inner enum definition. The problem goes away when moving the inner enum to a top level type. But it was surprising that this happened in the first place because none of the types that use adt4j are referencing that auto value type.

[ERROR] Unexpected exception. This seems like a bug in ADT4J, please report it at https://github.com/sviperll/adt4j/issues with the following details:
[ERROR] java.lang.RuntimeException: Unexpected exception
[ERROR] at com.github.sviperll.adt4j.GenerateValueClassForVisitorProcessor$ElementProcessor.processStage0(GenerateValueClassForVisitorProcessor.java:249)
[ERROR] at com.github.sviperll.adt4j.GenerateValueClassForVisitorProcessor$ElementProcessor.generateClassesWithErrors(GenerateValueClassForVisitorProcessor.java:175)
[ERROR] at com.github.sviperll.adt4j.GenerateValueClassForVisitorProcessor$ElementProcessor.generateClassesWithoutErrors(GenerateValueClassForVisitorProcessor.java:187)
[ERROR] at com.github.sviperll.adt4j.GenerateValueClassForVisitorProcessor.processRound(GenerateValueClassForVisitorProcessor.java:142)
[ERROR] at com.github.sviperll.adt4j.GenerateValueClassForVisitorProcessor.process(GenerateValueClassForVisitorProcessor.java:112)
[ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)
[ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)
[ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
[ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035)
[ERROR] at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176)
[ERROR] at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)
[ERROR] at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856)
[ERROR] at com.sun.tools.javac.main.Main.compile(Main.java:523)
[ERROR] at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129)
[ERROR] at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138)
[ERROR] at org.codehaus.plexus.compiler.javac.JavaxToolsCompiler.compileInProcess(JavaxToolsCompiler.java:126)
[ERROR] at org.codehaus.plexus.compiler.javac.JavacCompiler.performCompile(JavacCompiler.java:169)
[ERROR] at org.apache.maven.plugin.compiler.AbstractCompilerMojo.execute(AbstractCompilerMojo.java:785)
[ERROR] at org.apache.maven.plugin.compiler.CompilerMojo.execute(CompilerMojo.java:129)
[ERROR] at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:134)
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
[ERROR] at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:116)
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:80)
[ERROR] at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:51)
[ERROR] at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:128)
[ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:307)
[ERROR] at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:193)
[ERROR] at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:106)
[ERROR] at org.apache.maven.cli.MavenCli.execute(MavenCli.java:862)
[ERROR] at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:286)
[ERROR] at org.apache.maven.cli.MavenCli.main(MavenCli.java:197)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[ERROR] at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
[ERROR] at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[ERROR] at java.lang.reflect.Method.invoke(Method.java:497)
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:289)
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:229)
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:415)
[ERROR] at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:356)
[ERROR] Caused by: com.helger.jcodemodel.meta.CodeModelBuildingException: Can't define inner class com.spotify.styx.model.DataEndpoint.Partitioning: enclosing class com.spotify.styx.model.DataEndpoint already defined
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.getClass(DecidedErrorTypesModelsAdapter.java:184)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.ref(DecidedErrorTypesModelsAdapter.java:298)
[ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:143)
[ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:68)
[ERROR] at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:936)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.toJType(DecidedErrorTypesModelsAdapter.java:307)
[ERROR] at com.helger.jcodemodel.meta.ClassFiller.fillClass(ClassFiller.java:131)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineTopLevelClass(DecidedErrorTypesModelsAdapter.java:234)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineClass(DecidedErrorTypesModelsAdapter.java:198)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.getClass(DecidedErrorTypesModelsAdapter.java:165)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.ref(DecidedErrorTypesModelsAdapter.java:298)
[ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:143)
[ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:68)
[ERROR] at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:936)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.toJType(DecidedErrorTypesModelsAdapter.java:307)
[ERROR] at com.helger.jcodemodel.meta.ClassFiller.fillClass(ClassFiller.java:131)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineTopLevelClass(DecidedErrorTypesModelsAdapter.java:234)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineClass(DecidedErrorTypesModelsAdapter.java:198)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.getClass(DecidedErrorTypesModelsAdapter.java:165)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.ref(DecidedErrorTypesModelsAdapter.java:298)
[ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:143)
[ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:68)
[ERROR] at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:936)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.toJType(DecidedErrorTypesModelsAdapter.java:307)
[ERROR] at com.helger.jcodemodel.meta.ClassFiller.fillClass(ClassFiller.java:143)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineTopLevelClass(DecidedErrorTypesModelsAdapter.java:234)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineClass(DecidedErrorTypesModelsAdapter.java:198)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.getClass(DecidedErrorTypesModelsAdapter.java:165)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.ref(DecidedErrorTypesModelsAdapter.java:298)
[ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:143)
[ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:68)
[ERROR] at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:936)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.toJType(DecidedErrorTypesModelsAdapter.java:307)
[ERROR] at com.helger.jcodemodel.meta.ClassFiller.fillClass(ClassFiller.java:131)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineTopLevelClass(DecidedErrorTypesModelsAdapter.java:234)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineClass(DecidedErrorTypesModelsAdapter.java:198)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.getClass(DecidedErrorTypesModelsAdapter.java:165)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.ref(DecidedErrorTypesModelsAdapter.java:298)
[ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:143)
[ERROR] at com.helger.jcodemodel.meta.TypeMirrorToJTypeVisitor.visitDeclared(TypeMirrorToJTypeVisitor.java:68)
[ERROR] at com.sun.tools.javac.code.Type$ClassType.accept(Type.java:936)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.toJType(DecidedErrorTypesModelsAdapter.java:307)
[ERROR] at com.helger.jcodemodel.meta.ClassFiller.fillClass(ClassFiller.java:143)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineTopLevelClass(DecidedErrorTypesModelsAdapter.java:234)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.defineClass(DecidedErrorTypesModelsAdapter.java:198)
[ERROR] at com.helger.jcodemodel.meta.DecidedErrorTypesModelsAdapter.getClass(DecidedErrorTypesModelsAdapter.java:165)
[ERROR] at com.helger.jcodemodel.meta.JCodeModelJavaxLangModelAdapter.getClass(JCodeModelJavaxLangModelAdapter.java:145)
[ERROR] at com.helger.jcodemodel.meta.JCodeModelJavaxLangModelAdapter.getClassWithErrorTypes(JCodeModelJavaxLangModelAdapter.java:109)
[ERROR] at com.github.sviperll.adt4j.GenerateValueClassForVisitorProcessor$ElementProcessor.processStage0(GenerateValueClassForVisitorProcessor.java:247)
[ERROR] ... 40 more
[ERROR] Caused by: com.helger.jcodemodel.JClassAlreadyExistsException
[ERROR] ... 89 more
[ERROR] -> [Help 1]
sviperll commented 8 years ago

@rouzwawi Thank you for your report. I appreciate any help with project maintenance.

The cause of the problem seems to be the same. I've failed to manually check the exhaustiveness of the conditional expression. Hope that it's finally right.

I'll wait for new jcodemodel release and than release adt4j-3.2-beta2

sviperll commented 7 years ago

3.2-beta2 is released. This issue should be fixed.