I think I found a bug in the TimePicker component (Vaadin 14). If you provide NULL for the max string (as described in the param description), a null pointer exception is thrown.
/**
* Sets the maximum time in the time picker. Times after that will be
* disabled in the popup.
*
* @param max
* the maximum time that is allowed to be selected, or
* <code>null</code> to remove any maximum constraints
*/
@Override
public void setMax(String max) {
this.max = LocalTime.parse(max, initializeAndReturnFormatter());
super.setMax(max);
}