@Immutable static class AbstractListener