For instance, I use annotations to reflect clauses mentioned in the technical specifications:
public void createUser(User caller, User targetUser) throws PermissionException;
I also use the generic feature:
public interface User<P extends Profile<?> extends Entity
public interface Profile<U extends User<?>> extends Entity
That sounds a bit funny hey. I haven't yet found a good guide on how you should use generic smartly. Comments?