      # Bad patterns flagged outside of Matcher
      ([{"_": {"foo": "bar", "baz": {"IN": "foo"}}}], 1, 0),
      # Bad patterns not flagged with minimal checks
      ([{"LENGTH": {"IN": [1, 2, "3"]}}, {"POS": {"IN": "VERB"}}], 2, 0),
      ([{"LENGTH": {"VALUE": 5}}], 1, 0),
      ([{"TEXT": {"VALUE": "foo"}}], 1, 0),
      ([{"IS_DIGIT": -1}], 1, 0),
      ([{"ORTH": -1}], 1, 0),
      # Good patterns
 
</s> remove     ([{"IS_DIGIT": -1}], 1, 1),
    ([{"ORTH": -1}], 1, 1),
 </s> add  </s> remove     ([{"LENGTH": "2", "TEXT": 2}, {"LOWER": "test"}], 2, 1),
 </s> add  </s> remove         elif isinstance(value, dict):
 </s> add         elif isinstance(value, (dict, int)):
    ([{"LENGTH": "2", "TEXT": 2}, {"LOWER": "test"}], 2, 0),
      # Bad patterns flagged outside of Matcher
      ([{"_": {"foo": "bar", "baz": {"IN": "foo"}}}], 1, 0),
      # Bad patterns not flagged with minimal checks
    ([{"LENGTH": "2", "TEXT": 2}, {"LOWER": "test"}], 2, 0),
      ([{"LENGTH": {"IN": [1, 2, "3"]}}, {"POS": {"IN": "VERB"}}], 2, 0),
      ([{"LENGTH": {"VALUE": 5}}], 1, 0),
      ([{"TEXT": {"VALUE": "foo"}}], 1, 0),
      ([{"IS_DIGIT": -1}], 1, 0),
      ([{"ORTH": -1}], 1, 0),
      # Good patterns
keep keep add keep keep keep keep keep keep
 Allow int values in token patterns (#4444)

* Add missing int value option to top-level pattern validation in Matcher

* Adjust existing tests accordingly

* Add new test for valid pattern `{"LENGTH": int}` 
spacy/tests/matcher/test_pattern_validation.py