src/main/java/org/intellimate/izou/sdk/frameworks/music/events/PlayerUpdate.java
public static Optional<PlayerUpdate> createPlayerUpdate(Identification source, TrackInfo trackInfo) {
        if (trackInfo == null)
            return Optional.empty();
        try {
            PlayerUpdate playerUpdate = new PlayerUpdate(source);
            playerUpdate.addResource(new TrackInfoResource(source, trackInfo));
            return Optional.of(playerUpdate);
        } catch (IllegalArgumentException e) {
            return Optional.empty();
        }
    }
public static Optional<PlayerUpdate> createPlayerUpdate(Identification source, TrackInfo trackInfo) {
        if (trackInfo == null)
            return Optional.empty();
        try {
            PlayerUpdate playerUpdate = new PlayerUpdate(source);
            playerUpdate.addResource(new TrackInfoResource(source, trackInfo));
            return Optional.of(playerUpdate);
        } catch (IllegalArgumentException e) {
            return Optional.empty();
        }
    }
Creates a new Event Object

@param source      the source of the Event, most likely a this reference.
@param trackInfo the current song
@return the optional PlayerUpdate (if no illegal arguments got passed)
@throws IllegalArgumentException if one of the Arguments is null or empty