code: public static ClassFinder getClassFinder(Object context, int secsToWait)
      {
      	if ((bundleContext == null) && (context != null))
      	{	// This bundle was never started, that's okay. Use this bundle context
      		bundleContext = (BundleContext)context;
      	}
      	else if ((classFinder == null) && (secsToWait == -1))
      	    secsToWait = 0;    // If I was properly started, then use No until obr service starts
      	
      	if ((classFinder == null) && (bundleContext != null))
      	{
  			try {
  				ServiceReference[] ref = bundleContext.getServiceReferences(ClassFinder.class.getName(), null);
  			
  				if ((ref != null) && (ref.length > 0))
  					classFinder =  (ClassFinder)bundleContext.getService(ref[0]);
  			} catch (InvalidSyntaxException e) {
  				e.printStackTrace();
  			}
      	}
  		if (classFinder == null)
  			if (secsToWait != 0)
  				if (bundleContext != null)
  					classFinder = (ClassFinder)ClassFinderActivator.waitForServiceStartup(bundleContext, ClassFinder.class.getName(), ClassFinderActivator.class.getName(), null, null, secsToWait);
  
  		if (classFinder == null)
  		{	// Start up the 'no persistent storage' service.
  			classFinder = new NoClassFinderService();
  			try {	// Note: this does not start the service, but it does registers it as a service.
  				((NoClassFinderService)classFinder).start(bundleContext);
  			} catch (Exception e) {
  				e.printStackTrace();	// Never
  			}
  		}
  
  		return classFinder;
      }
docs: Find this class's class access service in the current workspace.
  @param secsToWait
  @param className
  @return