@Test
public void testAddStackUpto() {

	// most important functionality has been covered above
	SymbolicAddressMap m1 = map1();
	SymbolicAddressMap m2 = map2();
	SymbolicAddressMap top = SymbolicAddressMap.top();
	// trivial (bound 0)
	SymbolicAddressMap m1a = m1.clone();
	m1a.addStackUpto(m2, 0);
	assertEquals(m1,m1a);
	// add undefined
	try {
		m1.addStackUpto(null, 0);
		fail("addStackUpto(undefined,..) should fail");
	} catch(AssertionError _) {}
	try {
		top.addStackUpto(null, 0);						
		fail("addStackUpto(undefined,..) should fail");
	} catch(AssertionError _) {}
	// top is handled conservatively
	m1.addStackUpto(top, 1);
	assertEquals(m1,top);
}