docs: def AddBlock(self, block):
          """
          Add the given block to the model and also its input/output variables
          """
          if isinstance(block, Block):
              self.blocks.append(block)
              self.max_order = max(self.max_order, block.max_input_order-1)
              self.max_order = max(self.max_order, block.max_output_order)
              for variable in block.inputs+block.outputs:
                  self._AddVariable(variable)
          else:
              print(block)
              raise TypeError
          self._utd_graph = False