I belive that the last example is overcomplicated. The CommunicationMethod instance still has to check if the email address is present with a really weird accesss to the Customer object. Anyway, the purpose of Maybe in FP is to force the user to handle both cases, not only replace "!= null" with ".exists()".