+ if #self.inputModules == 1 then
+ self.inputModules[1]:updateOutput(input)
+ else
+ for i, d in ipairs(self.inputModules) do
+ d:updateOutput(input[i])
+ end
+ end
+
+ for _, d in ipairs(self.sorted) do
+ if self.pred[d] then
+ if #self.pred[d] == 1 then
+ d:updateOutput(self.pred[d][1].output)
+ elseif #self.pred[d] > 1 then
+ local c = {}
+ for k = 1, #self.pred[d] do
+ c[k] = self.pred[d][k].output
+ end
+ d:updateOutput(c)
+ end
+ end
+ end
+
+ if #self.outputModules == 1 then
+ self.output = self.outputModules[1].output
+ else
+ self.output = { }
+ for i, d in ipairs(self.inputModules) do
+ self.output[i] = d.output
+ end
+ end
+
+ return self.output