code: def eval_hessian(self, *args, **kwargs):
          
          # Evaluate the hessian model and use the resulting Ans namedtuple as a
          # dict. From this, take the relevant components.
          eval_hess_dict = self.hessian_model(*args, **kwargs)._asdict()
          hess = [[[np.broadcast_to(eval_hess_dict.get(D(var, p1, p2), 0),
                                    eval_hess_dict[var].shape)
                      for p2 in self.params]
                  for p1 in self.params]
              for var in self
          ]
          # Use numpy to broadcast these arrays together and then stack them along
          # the parameter dimension. We do not include the component direction in
          # this, because the components can have independent shapes.
          for idx, comp in enumerate(hess):
              hess[idx] = np.stack(np.broadcast_arrays(*comp))
  
          Ans = variabletuple('Ans', self.keys())
          return Ans(*hess)
docs: :return: Hessian evaluated at the specified point.