code: public static INode searchCache(List<INode> nodes, int offSet,
  			IVdmElement element)
  	{
  		synchronized (seacher)
  		{
  			if (DEBUG_PRINT)
  			{
  				System.out.println("Search start");
  			}
  			seacher.init();
  			seacher.offSet = offSet;
  			seacher.currentElement = element;
  			try
  			{
  				if (elementNodeCache.get(element) == null
  						|| elementNodeCache.get(element).isEmpty())
  				{
  					// elementNodeCache.put(element, new HashMap<ILexLocation, INode>());
  					// seacher.indexing = true;
  					// for (INode node : nodes)
  					// {
  					// node.apply(seacher);
  					// }
  					return null;
  				} else
  				{
  					for (Entry<ILexLocation, INode> entry : elementNodeCache.get(element).entrySet())
  					{
  						seacher.check(entry.getValue(), entry.getKey());
  					}
  				}
  
  			} catch (AnalysisException e)
  			{
  				// We found what we are looking for
  			}
  
  			return seacher.bestHit != null ? seacher.bestHit
  					: seacher.bestAlternativeHit;
  		}
  
  	}
docs: Search method to find the closest node to a location specified by a test offset
  
  @param nodes
  The nodes to search within
  @param offSet
  The offset to match a node to
  @param element
  @return The node closest to the offset or null