protected function generate_where_tag( $column, $equality = '', $value = '' ) {

		if ( $column instanceof Where ) {
			return $column;
		}

		if ( is_array( $value ) ) {

			if ( count( $value ) === 0 ) {
				throw new \InvalidArgumentException( 'Must provide at least one value for IN query.' );
			}

			$self  = $this;
			$value = array_map( function ( $value ) use ( $column, $self ) {
				return $self->escape_value( $column, $value );
			}, $value );
		} else {
			$value = $this->escape_value( $column, $value );
		}

		$column = $this->prepare_column( $column );

		return new Where( $column, $equality, $value );
	}