public boolean contains(AASystem other) {
       
        if (other.atoms.isEmpty()) {
            return true;
        }
        
        if (other.arches() > this.arches()) {
            return false;
        }
        
        if (other.as() > this.as()) {
            return false;
        }
        
        if (this.removeLastAtom().contains(other)) {
            return true;
        }
        
        if (this.lastAtom().isLetter()) {
            if (other.lastAtom().isLetter()) {
                return this.removeLastAtom().contains(other.removeLastAtom());
            } else {
                return false;
            }
        }
        
        if (this.uncoverLastAtom().contains(other)) {
            return true;
        }
        
        if (other.lastAtom().isLetter()) return false;
        
        return (this.lastAtom().contents().contains(other.lastAtom().contents)
                && this.removeLastAtom().contains(other.removeLastAtom()));
    }