class Event {

    public EventResource getFormattedEvent(Class<?> eventClass,
                                           String moduleEventName) {
        if (eventClass == null || !eventClass.equals(eventData.getClass())) {
            EventResourceBuilder edb = new EventResourceBuilder();
            edb.dataFields.add(new Metadata("Error",
                                            "null event data or event-class does not match event-data"));
            return edb.build();
        }

        EventResourceBuilder edb = new EventResourceBuilder();
        edb.setTimeStamp(timeMs);
        edb.setThreadId(threadId);
        edb.setThreadName(threadName);
        edb.setModuleEventName(moduleEventName);
        edb.setEventInstanceId(eventInstanceId);
        edb.setAcked(acked);
        customFormat(eventClass, eventData, edb);
        return edb.build();
    }

    public  Event(long timeMs, long threadId, String threadName,
                 Object eventData, long eventInstanceId);

}