def _get_descendants_errors(self):  # type: () -> List(ConfigError)
        """Recursively get errors from descendants

        :rtype: list of :ConfigErrors:"""
        descendants_errors = []
        if hasattr(self, '_children'):
            if isinstance(self._children, (list, tuple)):
                for c in self._children:
                    descendants_errors += c._get_all_errors()
            elif isinstance(self._children, dict):
                for c in self._children.values():
                    descendants_errors += c._get_all_errors()

        return descendants_errors