I've have an animal class

    class Animal
    {
        public function eat(Food $food);
    }

the subclass who inherit it actually cannot support all kinds of Food (Cat can only eat meat):

    class Cat extends Animal
    {
        public function eat(Food $food)
        {
            if (!$food instanceof Meat) throw new InvalidArgumentException();
        }
    }

of course, `Meat` is a subclass of `Food`

So is this code violate LSP (I think it does)? and how to re-design it?