docs: def create_problem_from_type_base(problem):
      """
      Creates OptProblem from type-base problem.
  
      Parameters
      ----------
      problem : Object
      """
  
      p = OptProblem()
  
      # Init attributes
      p.phi = problem.phi
      p.gphi = problem.gphi 
      p.Hphi = problem.Hphi 
      p.A = problem.A
      p.b = problem.b
      p.f = problem.f
      p.J = problem.J
      p.H_combined = problem.H_combined
      p.u = problem.u
      p.l = problem.l
      p.x = problem.x
      
      p.P = None
      p.lam = None
      p.nu = None
      p.mu = None
      p.pi = None
      
      p.wrapped_problem = problem
      
      # Methods
      def eval(cls,x):
          cls.wrapped_problem.eval(x)
          cls.phi = cls.wrapped_problem.phi
          cls.gphi = cls.wrapped_problem.gphi
          cls.Hphi = cls.wrapped_problem.Hphi
          cls.f = cls.wrapped_problem.f
          cls.J = cls.wrapped_problem.J
          
      def combine_H(cls,coeff,ensure_psd=False):
          cls.wrapped_problem.combine_H(coeff,ensure_psd)
          cls.H_combined = cls.wrapped_problem.H_combined
          
      p.eval = MethodType(eval,p)
      p.combine_H = MethodType(combine_H,p)
  
      # Return
      return p