nodes: 0, module; 1, function_definition; 2, function_name:properties; 3, parameters; 4, block; 5, identifier:self; 6, expression_statement; 7, expression_statement; 8, if_statement; 9, return_statement; 10, comment:"""
          Morphosemantic property mapping.
  
          Unlike :attr:`sortinfo`, this does not include `cvarsort`.
          """; 11, assignment; 12, comparison_operator:CVARSORT in d; 13, block; 14, identifier:d; 15, identifier:d; 16, call; 17, identifier:CVARSORT; 18, identifier:d; 19, delete_statement; 20, identifier:dict; 21, argument_list; 22, subscript; 23, attribute; 24, identifier:d; 25, identifier:CVARSORT; 26, identifier:self; 27, identifier:sortinfo
code: def properties(self):
          """
          Morphosemantic property mapping.
  
          Unlike :attr:`sortinfo`, this does not include `cvarsort`.
          """
          d = dict(self.sortinfo)
          if CVARSORT in d:
              del d[CVARSORT]
          return d