 		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 weave.api.data.ColumnMetadata;
	import weave.api.data.DataTypes;
	import weave.api.data.IDataSource;
	import weave.api.data.IWeaveTreeNode;
	import weave.api.detectLinkableObjectChange;
	import weave.api.getCallbackCollection;

					throw new Error("Invalid GeoJSON file: " + url);
				
				// parse data
				jsonData = new GeoJSONData(obj, getKeyType(), keyProperty.value);
				
				// set up hierarchy
				
				rootChildren = jsonData.propertyNames
					.map(function(n:String, i:*, a:*):*{ return getMetadataForProperty(n); })
					.filter(function(m:Object, ..._):Boolean{ return m != null; })
					.map(function(m:Object, ..._):*{ return new DataSourceNode(this, m); }, this);
				rootChildren.unshift(new DataSourceNode(this, getMetadataForProperty(null)));
				_rootNode = null;
				
				getCallbackCollection(this).triggerCallbacks();
