class StreamlineEventImpl extends ForwardingMap<String, Object> implements StreamlineEvent {

    @Override
    public String getDataSourceId() {
        String res = dataSourceId;
        if (res == null) {
            Object dataSourceIds = header.get("dataSourceIds");
            if (dataSourceIds instanceof List) {
                res = Joiner.on(",").join(Collections2.filter((List) dataSourceIds, new Predicate() {
                    @Override
                    public boolean apply(Object input) {
                        return input != null;
                    }
                }));
            }
        }
        return res;
    }

    private  StreamlineEventImpl();
    private  StreamlineEventImpl(Map<String, Object> keyValues, String dataSourceId, Map<String, Object> header,
                                String sourceStream, Map<String, Object> auxiliaryFieldsAndValues);

}