def set_terms(self,*terms, **kw_terms):
        """
        Create or set top level terms in the section. After python 3.6.0, the terms entries
        should maintain the same order as the argument list. The term arguments can have any of these forms:

        * For position argument, a Term object
        * For kw arguments:
            - 'TermName=TermValue'
            - 'TermName=(TermValue, PropertyDict)

        Positional arguments are processed before keyword arguments, and are passed into .add_term()

        :param terms: Term arguments
        :return:
        """

        for t in terms:
            self.add_term(t)

        for k,v in kw_terms.items():
            try:
                value, props = v
            except (ValueError, TypeError) as e:
                value, props = v,{}

            self.new_term(k,value,**props)