'Create new instance with already-processed args'

@classmethod
def _from_args(cls, args, is_commutative=None):

    if (len(args) == 0):
        return cls.identity
    elif (len(args) == 1):
        return args[0]
    obj = super(AssocOp, cls).__new__(cls, *args)
    if (is_commutative is None):
        is_commutative = fuzzy_and((a.is_commutative for a in args))
    obj.is_commutative = is_commutative
    return obj
