'If this is a single-value terminal, val should be a single value.
If this is a multi-value terminal, val should be a dict of terminal:value pairs'

def setValue(self, val, process=True):

    if (not self.isMultiValue()):
        if fn.eq(val, self._value):
            return
        self._value = val
    else:
        if (not isinstance(self._value, dict)):
            self._value = {}
        if (val is not None):
            self._value.update(val)
    self.setValueAcceptable(None)
    if (self.isInput() and process):
        self.node().update()
    self.recolor()
