Revised up to spec; added self-assignment check to '='