public Event(Event event) { if (event == null) { throw new IllegalArgumentException("event must be not null"); } this.tenantId = event.getTenantId(); this.trigger = event.getTrigger(); this.dampening = event.getDampening() != null ? new Dampening(event.getDampening()) : null; // evalSets are maintained as reference as it is a mostly read-only field this.evalSets = event.getEvalSets(); this.eventType = event.getEventType(); this.ctime = event.getCtime(); this.id = event.getId(); this.dataSource = event.getDataSource(); this.dataId = event.getDataId(); this.context = new HashMap<>(event.getContext()); this.category = event.getCategory(); this.text = event.getText(); this.tags = new HashMap<>(event.getTags()); }