@Value.Lazy public Optional<Long> serialVersion() { if (declaringType().isPresent()) { DeclaringType t = declaringType().get(); if (t.serialVersion().isPresent()) { return t.serialVersion(); } if (t.enclosingTopLevel().isPresent()) { if (t.enclosingTopLevel().get().serialVersion().isPresent()) { return t.enclosingTopLevel().get().serialVersion(); } } } return packageOf().serialVersion(); }