@Override
        public boolean equals(Object o) {
            if (this == o) return true;
            if (o == null || getClass() != o.getClass()) return false;

            MessageEvent that = (MessageEvent) o;

            if (Double.compare(that.position, position) != 0) return false;
            if (direction != that.direction) return false;
            if (!joinedLabel().equals(that.joinedLabel())) return false;

            return true;
        }