Bug 532176 - [10] NPE during reconcile
- make lazy initialization thread-safe

Change-Id: Icead28151b4fa31712af58f8392a58bcea37de8b
diff --git a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.java b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.java
index bcb72c7..12119eb 100644
--- a/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.java
+++ b/org.eclipse.jdt.core/compiler/org/eclipse/jdt/internal/compiler/classfmt/AnnotationInfo.java
@@ -189,7 +189,7 @@
 @Override
 public IBinaryElementValuePair[] getElementValuePairs() {
 	if (this.pairs == null)
-		initialize();
+		lazyInitialize();
 	return this.pairs;
 }
 @Override
@@ -204,6 +204,10 @@
 	if (this.pairs == null)
 		decodeAnnotation();
 }
+synchronized void lazyInitialize() {
+	if (this.pairs == null)
+		decodeAnnotation();
+}
 private int readRetentionPolicy(int offset) {
 	int currentOffset = offset;
 	int tag = u1At(currentOffset);