':see Expression._set_type()'

def _set_type(self, other_type=ANY_TYPE, signature=None):

    assert isinstance(other_type, Type)
    if (signature is None):
        signature = defaultdict(list)
    self.term._set_type(other_type.second, signature)
    if (not self.type.resolve(other_type)):
        raise TypeResolutionException(self, other_type)
