public void execute(HyperGraph graph) throws MaintenanceException
	{		
		HGIndexer indexer = graph.get(hindexer);
		if (indexer == null)
			return;
		HGIndex<?,?> idx = graph.getIndexManager().getIndex(indexer);
		if (idx == null)
			throw new MaintenanceException(false,"Indexer " + indexer + " with handle " + hindexer + 
												 " present in graph, but no actual index has been created.");
		for (HGHandle currentType : hg.typePlus(indexer.getType()).getSubTypes(graph))
		{		    
		    if (typesAdded.contains(currentType)) // are we resuming from a previous interruption?
		    {
		        // if the type has been completed processed, skip it
		        if (!typesAdded.get(typesAdded.size()-1).equals(currentType))
		            continue;
		        // otherwise, we are resuming the processing of 'currentType' and
		        // the lastProcessed variable should contain the handle of the last
		        // atom of that type that was added to the index
		    }
		    else
		    {
		        typesAdded.add(currentType);
		        lastProcessed = null;
		    }
		    indexAtomsTypedWith(graph, idx, indexer, currentType);		    
		}
	}