def createOverrideFunctionString(moduleConfig):
  """Creates the sting of overridden function declarations"""

  string = '  '
  if 'Termination Criteria' in moduleConfig:
    string += '/**\n  '
    string += '* @brief Determines whether the module can trigger termination of an experiment run.\n  '
    string += '* @return True, if it should trigger termination; false, otherwise.\n  '
    string += '*/\n  '
    string += 'bool checkTermination() override;\n  '

  string += '/**\n  '
  string += '* @brief Obtains the entire current state and configuration of the module.\n  '
  string += '* @param js JSON object onto which to save the serialized state of the module.\n  '
  string += '*/\n  '
  string += 'void getConfiguration(knlohmann::json& js) override;\n  '

  string += '/**\n  '
  string += '* @brief Sets the entire state and configuration of the module, given a JSON object.\n  '
  string += '* @param js JSON object from which to deserialize the state of the module.\n  '
  string += '*/\n  '
  string += 'void setConfiguration(knlohmann::json& js) override;\n  '

  string += '/**\n  '
  string += '* @brief Applies the module\'s default configuration upon its creation.\n  '
  string += '* @param js JSON object containing user configuration. The defaults will not override any currently defined settings.\n  '
  string += '*/\n  '
  string += 'void applyModuleDefaults(knlohmann::json& js) override;\n  '

  string += '/**\n  '
  string += '* @brief Applies the module\'s default variable configuration to each variable in the Experiment upon creation.\n  '
  string += '*/\n  '
  string += 'void applyVariableDefaults() override;\n  '

  if 'Available Operations' in moduleConfig:
    string += '/**\n  '
    string += '* @brief Runs the operation specified on the given sample. It checks recursively whether the function was found by the current module or its parents.\n  '
    string += "* @param sample Sample to operate on. Should contain in the 'Operation' field an operation accepted by this module or its parents.\n  "
    string += '* @param operation Should specify an operation type accepted by this module or its parents.\n  '
    string += '* @return True, if operation found and executed; false, otherwise.\n  '
    string += '*/\n  '
    string += 'bool runOperation(std::string operation, korali::Sample& sample) override;\n  '

  if 'Conditional Variables' in moduleConfig:
    string += '/**\n  '
    string += '* @brief Retrieves the pointer of a conditional value of a distribution property.\n  '
    string += '* @param property Name of the property to find.\n  '
    string += '* @return The pointer to the property..\n  '
    string += '*/\n  '
    string += 'double* getPropertyPointer(const std::string& property) override;\n  '

  return string