docs: def _check_flag_meanings(self, ds, name):
          '''
          Check a variable's flag_meanings attribute for compliance under CF
  
          - flag_meanings exists
          - flag_meanings is a string
          - flag_meanings elements are valid strings
  
          :param netCDF4.Dataset ds: An open netCDF dataset
          :param str name: Variable name
          :rtype: compliance_checker.base.Result
          '''
          variable = ds.variables[name]
          flag_meanings = getattr(variable, 'flag_meanings', None)
          valid_meanings = TestCtx(BaseCheck.HIGH, self.section_titles['3.5'])
  
          valid_meanings.assert_true(flag_meanings is not None,
                                     "{}'s flag_meanings attribute is required for flag variables".format(name))
  
          valid_meanings.assert_true(isinstance(flag_meanings, basestring),
                                     "{}'s flag_meanings attribute must be a string".format(name))
  
          # We can't perform any additional checks if it's not a string
          if not isinstance(flag_meanings, basestring):
              return valid_meanings.to_result()
  
          valid_meanings.assert_true(len(flag_meanings) > 0,
                                     "{}'s flag_meanings can't be empty".format(name))
  
          flag_regx = regex.compile(r"^[0-9A-Za-z_\-.+@]+$")
          meanings = flag_meanings.split()
          for meaning in meanings:
              if flag_regx.match(meaning) is None:
                  valid_meanings.assert_true(False,
                                             "{}'s flag_meanings attribute defined an illegal flag meaning ".format(name)+\
                                             "{}".format(meaning))
          return valid_meanings.to_result()