Каковы цели внутренних классов

Я рассматриваю концепцию внутренних классов в Java. так далеко от того, что я понял и применил, внутренние классы Java имеют ссылку или доступ к методам и полям своего внешнего / включающего класса.

Мой вопрос:

When should create or define an inner class? are inner classes considered to be called as "Helper classes" ? What are the indicators for you to make an inner class and what's their other purpose?