@Override
    public boolean seqChangeEffect(Variant seqChange, ChangeEffects changeEffects) {
        // Has the whole UTR been deleted?
        if (seqChange.includes(this) && (seqChange.getChangeType() == VariantType.DEL)) {
            changeEffects.add(this, EffectType.UTR_5_DELETED, ""); // A UTR was removed entirely
            return true;
        }

        // Is it START_GAINED?
        Transcript tr = (Transcript) findParent(Transcript.class);
        int dist = utrDistance(seqChange, tr);
        String gained = startGained(seqChange, tr);

        changeEffects.add(this, type, dist >= 0 ? dist + " bases from TSS" : "");
        if (dist >= 0) changeEffects.setDistance(dist);
        if (!gained.isEmpty()) changeEffects.add(this, EffectType.START_GAINED, gained);

        Utr5primeChange utrChange = new Utr5primeChange(seqChange, this, changeEffects.get());
        utrChange.calculate();
        return true;
    }