 		var that:DataSourceNode = other as DataSourceNode;
 		return that
 			&& this.source == that.source
-			&& StandardLib.compareDynamicObjects(this.metadata, that.metadata);
+			&& StandardLib.compareDynamicObjects(this.metadata, that.metadata) == 0;
 	}
 	public function getLabel():String
 	{

	import flash.net.URLRequest;
	import flash.system.Capabilities;
	import flash.utils.getDefinitionByName;
	
	import mx.rpc.events.FaultEvent;
	import mx.rpc.events.ResultEvent;

	}
	
	/**
	 * Derives GeneralizedGeometry objects from the GeoJSON data and overwrites the existing GeoJSON Geometry object.
	 * @param index Index in the geometries Array.
	 * @return An Array of GeneralizedGeometry objects
	 */
	public function convertToGeneralizedGeometries(index:int):Array
	{
		var obj:Object = geometries[index];
		var type:String = obj[GeoJSON.P_TYPE];
		var coords:Array = obj[GeoJSON.G_P_COORDINATES];
		
		// convert coords to MultiPolygon format: multi[ poly[ line[ point[] ] ] ]
		if (type == GeoJSON.T_POINT)
			type = GeometryType.POINT, coords = /*multi*/[/*poly*/[/*line*/[/*point*/coords]]];
		else if (type == GeoJSON.T_MULTI_POINT)
			type = GeometryType.POINT, coords = /*multi*/[/*poly*/[/*line*/coords]];
		else if (type == GeoJSON.T_LINE_STRING)
			type = GeometryType.LINE, coords = /*multi*/[/*poly*/[/*line*/coords]];
		else if (type == GeoJSON.T_MULTI_LINE_STRING)
			type = GeometryType.LINE, coords = /*multi*/[/*poly line*/coords];
		else if (type == GeoJSON.T_POLYGON)
			type = GeometryType.POLYGON, coords = /*multi*/[/*poly*/coords];
		else if (type == GeoJSON.T_MULTI_POLYGON)
			type = GeometryType.POLYGON;
		
		var result:Array = [];
		for each (var poly:Array in coords)
		{
			var geom:GeneralizedGeometry = new GeneralizedGeometry(type);
			var xyCoords:Array = [];
			for each (var part:Array in poly)
			{
				// add part marker if this is not the first part
				if (xyCoords.length == 0)
					xyCoords.push(NaN, NaN);
				// push x,y coords
				for each (var point:Array in part)
					xyCoords.push(point[0], point[1]);
			}
			geom.setCoordinates(xyCoords, BLGTreeUtils.METHOD_SAMPLE);
			result.push(geom);
		}
		return result;
	}
}