code: public static void addFinder(LocationFinder finder) {
  		if (finder == null) {
  			return;
  		}
  		synchronized (LocationFinder.class) {
  			List<WeakReference<LocationFinder>> newFinders = new ArrayList<WeakReference<LocationFinder>>(finders);
  			newFinders.add(new WeakReference<LocationFinder>(finder));
  			finders = newFinders;
  		}
  	}
docs: Add a {@link LocationFinder} to the list of finders that will be queried
  for an object's location by {@link #getLocation(Object, String)}.
  <p>
  <b>Important:</b> LocationUtils internally stores a weak reference to the
  finder. This avoids creating strong links between the classloader holding
  this class and the finder's classloader, which can cause some weird
  memory leaks if the finder's classloader is to be reloaded. Therefore,
  you <em>have</em> to keep a strong reference to the finder in the calling
  code, e.g.:
  
  <pre>
  private static LocationUtils.LocationFinder myFinder =
  new LocationUtils.LocationFinder() {
  public Location getLocation(Object obj, String desc) {
  ...
  }
  };
  
  static {
  LocationUtils.addFinder(myFinder);
  }
  </pre>
  
  @param finder
  the location finder to add