Lombok-intellij-plugin: Plugin Error: Lombok Plugin threw an uncaught NoClassDefFoundError

Created on 12 Sep 2017  路  12Comments  路  Source: mplushnikov/lombok-intellij-plugin

Short description

After updating my Lombok plugin, I get an unavoidable NoClassDefFoundError every time the plugin is started.

Version information

  • IDEA Version:
    Android Studio 3.0 Beta 5
    Build #AI-171.4316950, built on September 5, 2017
    JRE: 1.8.0_152-release-915-b01 amd64
    JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o

  • JDK Version: 8u152

  • OS Type & Version: Windows 10 10.0
  • Lombok Plugin Version: 0.15.17.1
  • Lombok Dependency Version: 1.16.16

Steps to reproduce

  1. Start IDE with plugin enabled

lombok.config

config.stopBubbling = true
lombok.addGeneratedAnnotation = false
lombok.anyConstructor.suppressConstructorProperties = true
lombok.accessors.chain = false
lombok.accessors.fluent = true

Stacktrace

com/intellij/util/indexing/IndexId
java.lang.NoClassDefFoundError: com/intellij/util/indexing/IndexId
    at de.plushnikov.intellij.plugin.lombokconfig.ConfigDiscovery.readProperty(ConfigDiscovery.java:153)
    at de.plushnikov.intellij.plugin.lombokconfig.ConfigDiscovery.discoverProperty(ConfigDiscovery.java:119)
    at de.plushnikov.intellij.plugin.lombokconfig.ConfigDiscovery.getStringLombokConfigProperty(ConfigDiscovery.java:37)
    at de.plushnikov.intellij.plugin.lombokconfig.ConfigDiscovery.getBooleanLombokConfigProperty(ConfigDiscovery.java:44)
    at de.plushnikov.intellij.plugin.processor.field.AccessorsInfo.buildAccessorsInfo(AccessorsInfo.java:84)
    at de.plushnikov.intellij.plugin.processor.field.AccessorsInfo.build(AccessorsInfo.java:62)
    at de.plushnikov.intellij.plugin.processor.field.AccessorsInfo.build(AccessorsInfo.java:47)
    at de.plushnikov.intellij.plugin.processor.field.GetterFieldProcessor.validateExistingMethods(GetterFieldProcessor.java:93)
    at de.plushnikov.intellij.plugin.processor.field.GetterFieldProcessor.validate(GetterFieldProcessor.java:74)
    at de.plushnikov.intellij.plugin.processor.field.AbstractFieldProcessor.process(AbstractFieldProcessor.java:44)
    at de.plushnikov.intellij.plugin.provider.LombokAugmentProvider$LombokCachedValueProvider.compute(LombokAugmentProvider.java:176)
    at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:141)
    at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
    at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
    at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
    at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
    at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:137)
    at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
    at de.plushnikov.intellij.plugin.provider.LombokAugmentProvider.getAugments(LombokAugmentProvider.java:127)
    at com.intellij.psi.augment.PsiAugmentProvider.lambda$collectAugments$0(PsiAugmentProvider.java:93)
    at com.intellij.psi.augment.PsiAugmentProvider.forEach(PsiAugmentProvider.java:137)
    at com.intellij.psi.augment.PsiAugmentProvider.collectAugments(PsiAugmentProvider.java:92)
    at com.intellij.psi.impl.source.ClassInnerStuffCache.getAllMethods(ClassInnerStuffCache.java:132)
    at com.intellij.psi.impl.source.ClassInnerStuffCache.lambda$getMethods$2(ClassInnerStuffCache.java:66)
    at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:141)
    at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
    at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
    at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
    at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
    at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:137)
    at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
    at com.intellij.psi.impl.source.ClassInnerStuffCache.getMethods(ClassInnerStuffCache.java:65)
    at com.intellij.psi.impl.source.PsiClassImpl.getMethods(PsiClassImpl.java:297)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil.buildMethodHierarchy(PsiSuperMethodImplUtil.java:187)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil.access$100(PsiSuperMethodImplUtil.java:44)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil$1.create(PsiSuperMethodImplUtil.java:54)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil$1.create(PsiSuperMethodImplUtil.java:50)
    at com.intellij.util.containers.FactoryMap.get(FactoryMap.java:57)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil$4.compute(PsiSuperMethodImplUtil.java:386)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil$4.compute(PsiSuperMethodImplUtil.java:380)
    at com.intellij.psi.impl.PsiParameterizedCachedValue.doCompute(PsiParameterizedCachedValue.java:53)
    at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
    at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
    at com.intellij.psi.impl.PsiParameterizedCachedValue.getValue(PsiParameterizedCachedValue.java:43)
    at com.intellij.psi.util.CachedValuesManager.getParameterizedCachedValue(CachedValuesManager.java:97)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil.getHierarchicalMethodSignature(PsiSuperMethodImplUtil.java:374)
    at com.intellij.psi.impl.source.PsiMethodImpl.getHierarchicalMethodSignature(PsiMethodImpl.java:155)
    at com.intellij.psi.impl.search.MethodSuperSearcher.lambda$execute$0(MethodSuperSearcher.java:43)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:942)
    at com.intellij.psi.impl.search.MethodSuperSearcher.execute(MethodSuperSearcher.java:42)
    at com.intellij.psi.impl.search.MethodSuperSearcher.execute(MethodSuperSearcher.java:35)
    at com.intellij.util.ExecutorsQuery.processResults(ExecutorsQuery.java:45)
    at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:79)
    at com.intellij.util.AbstractQuery.findFirst(AbstractQuery.java:56)
    at com.intellij.util.UniqueResultsQuery.findFirst(UniqueResultsQuery.java:51)
    at com.intellij.codeInsight.daemon.impl.JavaLineMarkerProvider.getLineMarkerInfo(JavaLineMarkerProvider.java:77)
    at com.intellij.codeInsight.daemon.impl.LineMarkersPass.queryProviders(LineMarkersPass.java:186)
    at com.intellij.codeInsight.daemon.impl.LineMarkersPass.lambda$doCollectInformation$3(LineMarkersPass.java:111)
    at com.intellij.codeInsight.daemon.impl.Divider.divideInsideAndOutsideInOneRoot(Divider.java:96)
    at com.intellij.codeInsight.daemon.impl.LineMarkersPass.doCollectInformation(LineMarkersPass.java:106)
    at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$null$1(PassExecutorService.java:438)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1156)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:431)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:556)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:501)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:430)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:406)
    at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
    at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:242)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
    at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.lang.ClassNotFoundException: com.intellij.util.indexing.IndexId PluginClassLoader[Lombook Plugin, 0.15.17.1]
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:65)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 77 more


java.lang.NoClassDefFoundError: com/intellij/util/indexing/IndexId
    at de.plushnikov.intellij.plugin.lombokconfig.ConfigDiscovery.readProperty(ConfigDiscovery.java:153)
    at de.plushnikov.intellij.plugin.lombokconfig.ConfigDiscovery.discoverProperty(ConfigDiscovery.java:119)
    at de.plushnikov.intellij.plugin.lombokconfig.ConfigDiscovery.getStringLombokConfigProperty(ConfigDiscovery.java:37)
    at de.plushnikov.intellij.plugin.lombokconfig.ConfigDiscovery.getBooleanLombokConfigProperty(ConfigDiscovery.java:44)
    at de.plushnikov.intellij.plugin.processor.field.AccessorsInfo.buildAccessorsInfo(AccessorsInfo.java:84)
    at de.plushnikov.intellij.plugin.processor.field.AccessorsInfo.build(AccessorsInfo.java:62)
    at de.plushnikov.intellij.plugin.processor.field.AccessorsInfo.build(AccessorsInfo.java:47)
    at de.plushnikov.intellij.plugin.processor.field.GetterFieldProcessor.validateExistingMethods(GetterFieldProcessor.java:93)
    at de.plushnikov.intellij.plugin.processor.field.GetterFieldProcessor.validate(GetterFieldProcessor.java:74)
    at de.plushnikov.intellij.plugin.processor.field.AbstractFieldProcessor.process(AbstractFieldProcessor.java:44)
    at de.plushnikov.intellij.plugin.provider.LombokAugmentProvider$LombokCachedValueProvider.compute(LombokAugmentProvider.java:176)
    at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:141)
    at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
    at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
    at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
    at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
    at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:137)
    at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
    at de.plushnikov.intellij.plugin.provider.LombokAugmentProvider.getAugments(LombokAugmentProvider.java:127)
    at com.intellij.psi.augment.PsiAugmentProvider.lambda$collectAugments$0(PsiAugmentProvider.java:93)
    at com.intellij.psi.augment.PsiAugmentProvider.forEach(PsiAugmentProvider.java:137)
    at com.intellij.psi.augment.PsiAugmentProvider.collectAugments(PsiAugmentProvider.java:92)
    at com.intellij.psi.impl.source.ClassInnerStuffCache.getAllMethods(ClassInnerStuffCache.java:132)
    at com.intellij.psi.impl.source.ClassInnerStuffCache.lambda$getMethods$2(ClassInnerStuffCache.java:66)
    at com.intellij.psi.util.CachedValuesManager.lambda$getCachedValue$0(CachedValuesManager.java:141)
    at com.intellij.psi.impl.PsiCachedValueImpl.doCompute(PsiCachedValueImpl.java:49)
    at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
    at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
    at com.intellij.psi.impl.PsiCachedValueImpl.getValue(PsiCachedValueImpl.java:38)
    at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:137)
    at com.intellij.psi.util.CachedValuesManager.getCachedValue(CachedValuesManager.java:127)
    at com.intellij.psi.impl.source.ClassInnerStuffCache.getMethods(ClassInnerStuffCache.java:65)
    at com.intellij.psi.impl.source.PsiClassImpl.getMethods(PsiClassImpl.java:297)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil.buildMethodHierarchy(PsiSuperMethodImplUtil.java:187)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil.access$100(PsiSuperMethodImplUtil.java:44)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil$1.create(PsiSuperMethodImplUtil.java:54)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil$1.create(PsiSuperMethodImplUtil.java:50)
    at com.intellij.util.containers.FactoryMap.get(FactoryMap.java:57)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil$4.compute(PsiSuperMethodImplUtil.java:386)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil$4.compute(PsiSuperMethodImplUtil.java:380)
    at com.intellij.psi.impl.PsiParameterizedCachedValue.doCompute(PsiParameterizedCachedValue.java:53)
    at com.intellij.util.CachedValueBase.getValueWithLock(CachedValueBase.java:222)
    at com.intellij.psi.impl.PsiCachedValue.getValueWithLock(PsiCachedValue.java:60)
    at com.intellij.psi.impl.PsiParameterizedCachedValue.getValue(PsiParameterizedCachedValue.java:43)
    at com.intellij.psi.util.CachedValuesManager.getParameterizedCachedValue(CachedValuesManager.java:97)
    at com.intellij.psi.impl.PsiSuperMethodImplUtil.getHierarchicalMethodSignature(PsiSuperMethodImplUtil.java:374)
    at com.intellij.psi.impl.source.PsiMethodImpl.getHierarchicalMethodSignature(PsiMethodImpl.java:155)
    at com.intellij.psi.impl.search.MethodSuperSearcher.lambda$execute$0(MethodSuperSearcher.java:43)
    at com.intellij.openapi.application.impl.ApplicationImpl.runReadAction(ApplicationImpl.java:942)
    at com.intellij.psi.impl.search.MethodSuperSearcher.execute(MethodSuperSearcher.java:42)
    at com.intellij.psi.impl.search.MethodSuperSearcher.execute(MethodSuperSearcher.java:35)
    at com.intellij.util.ExecutorsQuery.processResults(ExecutorsQuery.java:45)
    at com.intellij.util.AbstractQuery.forEach(AbstractQuery.java:79)
    at com.intellij.util.AbstractQuery.findFirst(AbstractQuery.java:56)
    at com.intellij.util.UniqueResultsQuery.findFirst(UniqueResultsQuery.java:51)
    at com.intellij.codeInsight.daemon.impl.JavaLineMarkerProvider.getLineMarkerInfo(JavaLineMarkerProvider.java:77)
    at com.intellij.codeInsight.daemon.impl.LineMarkersPass.queryProviders(LineMarkersPass.java:186)
    at com.intellij.codeInsight.daemon.impl.LineMarkersPass.lambda$doCollectInformation$3(LineMarkersPass.java:111)
    at com.intellij.codeInsight.daemon.impl.Divider.divideInsideAndOutsideInOneRoot(Divider.java:96)
    at com.intellij.codeInsight.daemon.impl.LineMarkersPass.doCollectInformation(LineMarkersPass.java:106)
    at com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$null$1(PassExecutorService.java:438)
    at com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1156)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:431)
    at com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:556)
    at com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:501)
    at com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:66)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:430)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:406)
    at com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:142)
    at com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:242)
    at com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:404)
    at com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:165)
    at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
    at java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
    at java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
    at java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)
Caused by: java.lang.ClassNotFoundException: com.intellij.util.indexing.IndexId PluginClassLoader[Lombook Plugin, 0.15.17.1]
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:65)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 77 more
bug

Most helpful comment

Please update lombok-plugin to last version (0.15.17.2)

All 12 comments

I get this too. Is there a way to downgrade to the previous version of the plugin?

The reason of this issue is a breaking change in the last 2017.2 IDE API. Looks like we need to stick to the 2017.1 API
I'll release fix for that quite soon...

Please update lombok-plugin to last version (0.15.17.2)

Thanks for the quick fix. I'll try it in the morning.

Plugin Error: Lombok Plugin threw an uncaught NoClassDefFoundError, Version: 0.15.17.2 (Android Studio 3.0 RC 2)

As alla2040 said, I'm also getting the same error after updating to Studio 3.0:

Android Studio 3.0
Build #AI-171.4408382, built on October 20, 2017
JRE: 1.8.0_152-release-915-b08 x86_64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
Mac OS X 10.12.6

Me too having the same error!

me too

me too

me too

IDEA2018.1 has also this problem,I use JDK9

this problem often occurs now.

2018-07-17 16:00:03,816 [ 0] INFO - #com.intellij.idea.Main - ------------------------------------------------------ IDE STARTED ------------------------------------------------------ 2018-07-17 16:00:03,954 [ 138] INFO - #com.intellij.idea.Main - IDE: IntelliJ IDEA (build #IU-181.5540.7, 11 Jul 2018 19:03) 2018-07-17 16:00:03,954 [ 138] INFO - #com.intellij.idea.Main - OS: Mac OS X (10.13.5, x86_64) 2018-07-17 16:00:03,954 [ 138] INFO - #com.intellij.idea.Main - JRE: 1.8.0_152-release-1136-b39 (JetBrains s.r.o) 2018-07-17 16:00:03,954 [ 138] INFO - #com.intellij.idea.Main - JVM: 25.152-b39 (OpenJDK 64-Bit Server VM) 2018-07-17 16:00:03,969 [ 153] INFO - #com.intellij.idea.Main - JVM Args: -Xms128m -Xmx1500m -XX:ReservedCodeCacheSize=240m -XX:+UseCompressedOops -Dfile.encoding=UTF-8 -XX:+UseConcMarkSweepGC -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -Xverify:none -XX:ErrorFile=/Users/wangbin/java_error_in_idea_%p.log -XX:HeapDumpPath=/Users/wangbin/java_error_in_idea.hprof -Xbootclasspath/a:../lib/boot.jar -Dide.no.platform.update=true -Djb.vmOptionsFile=/Users/wangbin/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/181.5540.7/IntelliJ IDEA.app.vmoptions -Didea.java.redist=jdk-bundled -Didea.home.path=/Users/wangbin/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/181.5540.7/IntelliJ IDEA.app/Contents -Didea.executable=idea -Didea.paths.selector=IntelliJIdea2018.1 2018-07-17 16:00:03,970 [ 154] INFO - #com.intellij.idea.Main - ext: /Users/wangbin/Library/Application Support/JetBrains/Toolbox/apps/IDEA-U/ch-0/181.5540.7/IntelliJ IDEA.app/Contents/jdk/Contents/Home/jre/lib/ext: [sunec.jar, nashorn.jar, cldrdata.jar, jfxrt.jar, dnsns.jar, localedata.jar, sunjce_provider.jar, meta-index, sunpkcs11.jar, jaccess.jar, zipfs.jar] 2018-07-17 16:00:03,970 [ 154] INFO - #com.intellij.idea.Main - ext: /System/Library/Java/Extensions: [MRJToolkit.jar] 2018-07-17 16:00:03,970 [ 154] INFO - #com.intellij.idea.Main - JNU charset: UTF-8 2018-07-17 16:00:03,980 [ 164] INFO - #com.intellij.idea.Main - JNA library (64-bit) loaded in 10 ms

But after i restart IDEA, it's fine.

Was this page helpful?
0 / 5 - 0 ratings