why passing this `annotation` param here? it's always `NotNull.class`