def _add_error(self, *args, **kwargs):  # type: () -> None
        """Convenience function to add an error to this object, with line numbers

        An error title or description should not accidentally leak self._value, for privacy/redaction purposes.

        :rtype: None
        """
        if kwargs.get('node', None):
            # if node specified and not none
            error = ConfigError.create_from_yaml_node(
                *args,
                **kwargs
            )
        elif self._value_node:
            # default to using the node if we have one
            error = ConfigError.create_from_yaml_node(
                node=self._value_node,
                *args,
                **kwargs
            )
        else:
            # no nodes or error_obj to attach
            error = ConfigError(*args, **kwargs)

        self._errors.append(error)
Convenience function to add an error to this object, with line numbers

        An error title or description should not accidentally leak self._value, for privacy/redaction purposes.

        :rtype: None