Noob question: unexpected result for abs() of a complex value



The following script is giving a result that I don't expect:

declare(z,complex);
abs(z*z);
z : %i;
abs(z*z);

The first absolute value returns z^2 and the second returns 1.  I don't 
understand how abs(z^2) could be equal to z^2 if z is complex.  Is 
Maxima assuming that z is real even though it is declared complex?  And 
if so, shouldn't "conjugate(z) * z" simplify to "z^2" also?

- Dan