diff --git a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/callinmarkers/CallinMarkerCreator2.java b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/callinmarkers/CallinMarkerCreator2.java
index c41fcb8..27d2309 100644
--- a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/callinmarkers/CallinMarkerCreator2.java
+++ b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/internal/ui/callinmarkers/CallinMarkerCreator2.java
@@ -1,7 +1,7 @@
 /**********************************************************************
  * This file is part of "Object Teams Development Tooling"-Software
  * 
- * Copyright 2003, 2008 Fraunhofer Gesellschaft, Munich, Germany,
+ * Copyright 2003, 2010 Fraunhofer Gesellschaft, Munich, Germany,
  * for its Fraunhofer Institute for Computer Architecture and Software
  * Technology (FIRST), Berlin, Germany and Technical University Berlin,
  * Germany.
@@ -52,9 +52,11 @@
 import org.eclipse.jdt.core.JavaModelException;
 import org.eclipse.jdt.core.search.IJavaSearchConstants;
 import org.eclipse.jdt.core.search.IJavaSearchScope;
+import org.eclipse.jdt.core.search.SearchEngine;
 import org.eclipse.jdt.core.search.SearchMatch;
 import org.eclipse.jdt.core.search.SearchPattern;
 import org.eclipse.jdt.core.search.SearchRequestor;
+import org.eclipse.jdt.core.search.TypeNameRequestor;
 import org.eclipse.jdt.internal.ui.javaeditor.IClassFileEditorInput;
 import org.eclipse.jface.action.IStatusLineManager;
 import org.eclipse.jface.preference.IPreferenceStore;
@@ -102,6 +104,7 @@
     private Set<IClassFile> m_cachedMarkersForJavaElements = new HashSet<IClassFile>();
     private boolean m_enabled = false;
     protected AnnotationHelper annotationHelper;
+    private boolean isInitialized = false;
 
 	/**
 	 * Typical usage:
@@ -793,7 +796,47 @@
 		}
     }
 
-    protected void schedule(final CallinMarkerJob job, IStatusLineManager statusLine)
+    /** chained scheduling:<ul>
+     *  <li> first wait until the indexes are ready (only on first invocation),
+     *  <li> only then schedule our job.
+     */
+    protected synchronized void schedule(final CallinMarkerJob job, final IStatusLineManager statusLine)
+    {
+    	if (this.isInitialized) {
+    		doSchedule(job, statusLine);
+    		return;
+    	} else {
+    		this.isInitialized = true;
+    		Job waitForIndex = new Job(OTDTUIPlugin.getResourceString("CallinMarkerCreator2.wait_for_index_message")) { //$NON-NLS-1$
+    			@Override
+    			protected IStatus run(IProgressMonitor monitor) {
+    				try {
+    					// dummy query for waiting until the indexes are ready (see AbstractJavaModelTest)
+						new SearchEngine().searchAllTypeNames(
+								null,
+								SearchPattern.R_EXACT_MATCH,
+								"!@$#!@".toCharArray(), //$NON-NLS-1$
+								SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE,
+								IJavaSearchConstants.CLASS,
+								SearchEngine.createWorkspaceScope(),
+								new TypeNameRequestor() {
+									public void acceptType(int modifiers,char[] packageName,char[] simpleTypeName,char[][] enclosingTypeNames,String path) {}
+								},
+								IJavaSearchConstants.WAIT_UNTIL_READY_TO_SEARCH,
+								null);
+					} catch (CoreException e) {
+					} finally {
+						// chaining:
+						doSchedule(job, statusLine);
+					}
+					return Status.OK_STATUS;
+    			}
+    		};
+    		waitForIndex.setPriority(Job.DECORATE);
+    		waitForIndex.schedule(100);
+    	}    	
+    }
+    protected void doSchedule(final CallinMarkerJob job, IStatusLineManager statusLine)
     {
         job.addJobChangeListener(new JobListener(statusLine) {
             protected void jobFinished(int status) {
diff --git a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/ui/OTDTUIPlugin.java b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/ui/OTDTUIPlugin.java
index a0f1414..fb57345 100644
--- a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/ui/OTDTUIPlugin.java
+++ b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/ui/OTDTUIPlugin.java
@@ -23,8 +23,6 @@
 import java.util.MissingResourceException;
 import java.util.ResourceBundle;
 
-import org.eclipse.core.resources.IWorkspace;
-import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IAdapterManager;
 import org.eclipse.core.runtime.IStatus;
 import org.eclipse.core.runtime.Platform;
diff --git a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/ui/OTPluginResources.properties b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/ui/OTPluginResources.properties
index 0e1a817..2844d19 100644
--- a/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/ui/OTPluginResources.properties
+++ b/plugins/org.eclipse.objectteams.otdt.ui/src/org/eclipse/objectteams/otdt/ui/OTPluginResources.properties
@@ -62,6 +62,7 @@
 CallinMarkerCreator2.search_failed_message=Searching for bound base methods failed -- no markers will be shown.
 CallinMarkerCreator2.search_canceled_message=Searching for bound base methods canceled -- no markers will be shown.
 CallinMarkerCreator2.line_number_error_message=Cannot compute line number for callin marker
+CallinMarkerCreator2.wait_for_index_message=OTDT Waiting for Java Indexes
 
 #Team activation tab:
 TeamConfig.tab_title=Team Activation
