final private Map<Property, PropertySearchResults> addThisResult(
			Map<Property, PropertySearchResults> results,List<Property> targetProperties) {
		if(results==null) {
	    	// first match, need to allocate a result set 
	    	// guess what size map to create
	    	int expectedResults;
	    	if(targetProperties!=null) {
	    		expectedResults=targetProperties.size();
	    	} else {
	    		expectedResults=10;
	    	}
	    	results=new HashMap<Property,PropertySearchResults>(expectedResults);

	    	// put this node in results
			results.put(this.getNodeProperty(),new PropertySearchResults(this));
		} else {
			PropertySearchResults resultForThisProp=results.get(this.getNodeProperty());
			if(resultForThisProp==null) {
				results.put(this.getNodeProperty(), new PropertySearchResults(this));
			} else {
				resultForThisProp.addResult(this);
			}
		}
		return results;
	}