def METHOD_NAME(self):
    r"""
    Return the additive order of this element.
    EXAMPLES::
        sage: G = cartesian_product([Zmod(3), Zmod(6), Zmod(5)])
        sage: G((1,1,1)).additive_order()
        30
        sage: any((i * G((1,1,1))).is_zero() for i in range(1,30))
        False
        sage: 30 * G((1,1,1))
        (0, 0, 0)
        sage: G = cartesian_product([ZZ, ZZ])
        sage: G((0,0)).additive_order()
        1
        sage: G((0,1)).additive_order()
        +Infinity
        sage: # needs sage.rings.finite_rings
        sage: K = GF(9)
        sage: H = cartesian_product([
        ....:     cartesian_product([Zmod(2), Zmod(9)]), K])
        sage: z = H(((1,2), K.gen()))
        sage: z.additive_order()
        18
    """
    from sage.rings.infinity import Infinity
    orders = [x.METHOD_NAME() for x in self.cartesian_factors()]
    if any(o is Infinity for o in orders):
        return Infinity
    else:
        from sage.arith.functions import LCM_list
        return LCM_list(orders)