public boolean equals(Node n)
	{
		Parser.condense(this);
		Parser.condense(n);
		
		if( !data.equals( n.data ) || child.size() != n.child.size() )
			return false;
		
		if(child.size() == 0)
			return true;
		
		boolean[] found = new boolean[child.size()];
		
		for(int i = 0; i<child.size(); ++i)
		{
			for(int j = 0; j<child.size(); ++j)
			{
				if( child.get(i).equals( n.child.get(j) ) && !found[j]  )
				{
					found[j] = true;
					break;
				}
			}
		}
		
		for(boolean b: found)
		{
			if(!b)
				return false;
		}
		return true;
		
	}