класс C знает, что использует интерфейс B. в интерфейсе B нет метода getSecond. конечно оно упадет лишь в рантайме, если передать туда класс без этого метода - но есть одна ошибка: почему класс, зависящий от интерфейса, пытается дернуть то, чего в этом интерфейсе нет? 3 пути: 1) добавить getSecond в интерфейс. 2) поменять зависимость класса C с интерфейса B на класс A. 3) завести интерфейс с методом getSecond (пусть это будет interface D), но тут надо хитрый трюк провернуть, $interfaceB в классе C должен иметь экзотический тип B & D. т.е. не "или" (когда может не быть чего-то), а именно "и". стат анализаторы вроде поддерживают такое, но все-таки, тут наверное уж тогда звести еще interface E extends B, D, либо просто Interface D extends B, и добавить туда getSecond. как-то так...