protected PathTraceMaterial nodeIsHomogeneous( SolidNode sn ) throws DereferenceException {
		if( sn.getType() == SolidNode.Type.HOMOGENEOUS ) return sn.getHomogeneousMaterial();
		
		if( sn.getType() == SolidNode.Type.DENSITY_FUNCTION_SUBDIVIDED ) return null; // lets ignore this possibility for now
		
		Object o = nodeHomogeneityCache.get(sn);
		if( o == null ) {
			PathTraceMaterial m = regionIsHomogeneous( sn, 0, 0, 0, sn.getDivX(), sn.getDivY(), sn.getDivZ() );
			nodeHomogeneityCache.put(sn, o = (m == null ? Boolean.FALSE : m));
		}
		return o == Boolean.FALSE ? null : (PathTraceMaterial)o;
	}