Спускання з місця іноді необхідне та доречне. Зокрема, це часто доцільно у тих випадках, коли в когось є об'єкти, які можуть мати, а можуть і не мати певну здатність, і хочеться використовувати цю здатність, коли вона існує під час обробки об'єктів без такої здатності якось за замовчуванням. Приклади просто, припустимо String, запитується, чи дорівнює він якомусь іншому довільному об'єкту. Для того, Stringщоб один дорівнював іншому String, він повинен вивчити масив довжини та резервного символу другого рядка. Якщо а Stringзапитують, чи дорівнює Dogвін, то він не може отримати доступ до довжини Dog, але це не повинно бути; натомість, якщо об'єкт, з яким Stringмає порівнювати себе, не єString, порівняння має використовувати поведінку за замовчуванням (повідомляючи, що інший об'єкт не є рівним).
Час, коли зрив каналу слід вважати найбільш сумнівним, це коли "відомий" об'єкт, який викидається, належного типу. Загалом, якщо об'єкт, як відомо, є a Cat, для його використання слід використовувати змінну типу Cat, а не змінну типу Animal. Однак бувають випадки, коли це не завжди працює. Наприклад, Zooколекція може містити пари об'єктів у слотах парного / непарного масиву, сподіваючись, що об'єкти кожної пари зможуть діяти один на одного, навіть якщо вони не зможуть діяти на об'єкти інших пар. У такому випадку об’єкти в кожній парі все одно повинні прийняти неспецифічний тип параметра, такий, що вони могли б синтаксично передавати об'єкти з будь-якої іншої пари. Таким чином, навіть якщо Cat'splayWith(Animal other)метод буде працювати лише тоді, коли otherбув a Cat, Zooпотрібно було б мати можливість передавати йому елемент an Animal[], тому його тип параметра повинен бути, Animalа не Cat.
У тих випадках, коли зрив мотивів законно неминучий, його слід використовувати без особливих труднощів. Ключове питання полягає у визначенні того, коли можна розумно уникнути занепаду, та уникнути цього, коли це можливо.