def set_defaults(self, default_values, recursive = False):
        """
        Set default values from specified Parameters and returns a new Parameters object.

        :param default_values: Parameters with default parameter values.

        :param recursive: (optional) true to perform deep copy, and false for shallow copy. Default: false

        :return: a new Parameters object.
        """
        result = Parameters()

        if recursive:
            RecursiveObjectWriter.copy_properties(result, default_values)
            RecursiveObjectWriter.copy_properties(result, self)
        else:
            ObjectWriter.set_properties(result, default_values)
            ObjectWriter.set_properties(result, self)

        return result