@classmethod<EOL><INDENT>def _check_properties(cls, property_names, require_indexed=True):<DEDENT>
assert isinstance(property_names, (list, tuple)), repr(property_names)<EOL>for name in property_names:<EOL><INDENT>assert isinstance(name, basestring), repr(name)<EOL>if '<STR_LIT:.>' in name:<EOL><INDENT>name, rest = name.split('<STR_LIT:.>', <NUM_LIT:1>)<EOL><DEDENT>else:<EOL><INDENT>rest = None<EOL><DEDENT>prop = cls._properties.get(name)<EOL>if prop is None:<EOL><INDENT>cls._unknown_property(name)<EOL><DEDENT>else:<EOL><INDENT>prop._check_property(rest, require_indexed=require_indexed)<EOL><DEDENT><DEDENT>
Internal helper to check the given properties exist and meet specified
        requirements.

        Called from query.py.

        Args:
          property_names: List or tuple of property names -- each being a string,
            possibly containing dots (to address subproperties of structured
            properties).

        Raises:
          InvalidPropertyError if one of the properties is invalid.
          AssertionError if the argument is not a list or tuple of strings.