На 2 уровне 8 лекции джавы кор есть пример:
public static void main(String[] args)
{
 //добавляем всех роботов в список
 ArrayList robots = new ArrayList();
 robots.add(new РабочийРобот());
 robots.add(new РоботСторож());
 robots.add(new Поливалка());

 //строить стену, если есть такая способность
 for (Object robot: robots)
 {
  if (robot instanceof WallBuilder)
  {
   WallBuilder builder = (WallBuilder) robot;
   builder.buildWall();
   }
  }
 }
}
Соответственно, у нас есть Object robot : robots, в комментариях к лекции пояснили, что мы приводим потом Object robot к WallBuilder т.к. у нас у Обджекта нет метода buildWall(), и ему надо его вернуть через приведение(надеюсь смысл понятен, написал криво, но, вроде, ясно). Так вот, с приведением типа все понятно, но я не понимаю, как Object robot проходит условие instanceof, если в нем до приведения типа нет метода buildWall()?