def _IN(self, value):
if not self._indexed:<EOL><INDENT>raise datastore_errors.BadFilterError(<EOL>'<STR_LIT>' % self._name)<EOL><DEDENT>from .query import FilterNode  <EOL>if not isinstance(value, (list, tuple, set, frozenset)):<EOL><INDENT>raise datastore_errors.BadArgumentError(<EOL>'<STR_LIT>' % (value,))<EOL><DEDENT>values = []<EOL>for val in value:<EOL><INDENT>if val is not None:<EOL><INDENT>val = self._do_validate(val)<EOL>val = self._call_to_base_type(val)<EOL>val = self._datastore_type(val)<EOL><DEDENT>values.append(val)<EOL><DEDENT>return FilterNode(self._name, '<STR_LIT>', values)<EOL>
Comparison operator for the 'in' comparison operator.

        The Python 'in' operator cannot be overloaded in the way we want
        to, so we define a method.  For example::

          Employee.query(Employee.rank.IN([4, 5, 6]))

        Note that the method is called ._IN() but may normally be invoked
        as .IN(); ._IN() is provided for the case you have a
        StructuredProperty with a model that has a Property named IN.