You're right: you can't invoke method_1() in "base" class from "inner".
An instance of an inner class has a reference to the instance of the containing class that created the inner class instance. At the moment the inner class instance is created, a copy of the "this" reference of the creating containg class instance is stored in the newborn inner class instance. (Though you and I can't use that reference explicitly inside the inner class, and sometimes that's annoying.)
The creating containing class instance has a "super" as well as a "this". But there's no way for the inner class to access that "super". So in your example, there's no way for the inner class to say that it wants method_1 in the base class and not in the subclass.
Within the inner class, "super" works with the superclass of the inner class, not the superclass of the containing class. So it does no good to try to invoke super.method_1() ... the compiler will think "super" means the superclass of the inner class, which is Object. Since Object doesn't have a method_1, compilation will fail.
By the way, I highly recommend having all class names begin with upper-case letters, and avoiding underscores in most identifier names. It's not inherently better, but it's standard. The Programmer Exam doesn't
test for nowledge of commonly-accepted coding conventions, but the Developer Exam cares about readability, so it's a good habit to get into. So for example, instead of class big_river, the conventional name would be BigRiver.