Serialization of inner classes, including local and anonymous classes, is strongly discouraged. When the Java compiler compiles certain constructs, such as inner classes, it creates synthetic constructs; these are classes, methods, fields, and other constructs that do not have a corresponding construct in the source code. Synthetic constructs enable Java compilers to implement new Java language features without changes to the JVM. However, synthetic constructs can vary among different Java compiler implementations
J. Barnejee, W. Kim, H. Kim, and H. Korth. Proceedings of the 12th Annual ACM Conference on the Managemant of Data, page 311--322. San Francisco, (May 1987)