def METHOD_NAME(full_op, type_param_non_default):
    op = deepcopy(full_op)
    dummy_sim = DummySimulation()
    cpp_obj = DummyCppObj()
    op._cpp_obj = cpp_obj
    op.type_param.update(type_param_non_default)
    op._apply_typeparam_dict(cpp_obj, dummy_sim)
    op._apply_param_dict()
    # Keep sim around despite weak reference
    op.__simulation = dummy_sim
    return op