<T>T optional(Object obj,Class<T> clazz,String part) throws ParseException {
  if (obj == null) {
    return null;
  }
  return expect(obj,clazz,part);
}

< T > T optional ( Object obj , Class < T > clazz , String part ) throws ParseException { if ( obj == null ) { return null ; } return expect ( obj , clazz , part ) ; }
abort with a parseexception if obj is not either null or of type clazz , returning obj otherwise .
