code: public static Optional<AddOn> createAddOn(Path file) {
  		try {
  			return Optional.of(new AddOn(file));
  		} catch (AddOn.InvalidAddOnException e) {
  			logger.warn("Invalid add-on: " + file.toString(), e);
  		} catch (Exception e) {
  			logger.error("Failed to create an add-on from: " + file.toString(), e);
  		}
  		return Optional.empty();
  	}
docs: Convenience method that attempts to create an {@code AddOn} from the given file.
  <p>
  A warning is logged if the add-on is invalid and an error if an error occurred while creating it.
  
  @param file the file of the add-on.
  @return a container with the {@code AddOn}, or empty if not valid or an error occurred while creating it.
  @since TODO add version