По сути - вам нужен DI контейнер, у вас получается так:
Сервис Main без зависимостей.
Сервис First должен получать в конструктор Main, т.е. должно выглядеть как-то так:
new First(mainInstance)
Сервис Second должен получать в конструктор Main и First, т.е.
new Second(mainInstance, firstInstance)
Это всё верно, если все три сервиса - синглтоны.
Если нет - то вместо instance должны быть вызовы new Constructor(...)
Загадкой остается, почему вы пытаетесь в Main создавать эти инстансы?
Если вы хотите всё вызывать через Main.foo - замиксиньте их в Main.