Блин, упустил этот момент и теперь неуверенность все время. Вобщем, если в классе Solution имеются вложенные классы - кандидаты на сериализацию, то в каком случае Solution должен имплементить Serializable? В некоторых задачах должен, а в этой например не надо. От чего это зависит?
public class Solution {

    public static class Person implements Serializable{
        String firstName;
        String lastName;
        transient String fullName;
        transient final String greeting;
        String country;
        Sex sex;
        transient PrintStream outputStream;
        transient Logger logger;

        Person(String firstName, String lastName, String country, Sex sex) {
            this.firstName = firstName;
            this.lastName = lastName;
            this.fullName = String.format("%s, %s", lastName, firstName);
            this.greeting = "Hello, ";
            this.country = country;
            this.sex = sex;
            this.outputStream = System.out;
            this.logger = Logger.getLogger(String.valueOf(Person.class));
        }
    }
Не хватает какой-то крупицы, чтоб в голове улеглось. Вот кусок одной из предыдущих задач, в которой сериализуем класс В:
public class Solution implements Serializable{
    public static class A{
        public A(){}

        protected String nameA = "A";

        public A(String nameA) {
            this.nameA += nameA;
        }
    }

    public class B extends A implements Serializable {

        private String nameB;

        public B(String nameA, String nameB) {
            super(nameA);
            this.nameA += nameA;
            this.nameB = nameB;
        }
   }
}
Здесь Solution должен implements Serializable. Почему должен? Туплю немного) Это зависит от: вложенный класс static/not static?