should be annotated with `@Immutable`