¿Por qué mi subclase no puede acceder a una variable protegida de su superclase cuando está en un paquete diferente?

Tengo una clase abstractarelation en paquetedatabase.relation y una subclase de ellaJoinen paquetedatabase.operations. relation tiene un miembro protegido llamadomStructure.

EnJoin:

public Join(final Relation relLeft, final Relation relRight) {
        super();
        mRelLeft = relLeft;
        mRelRight = relRight;
        mStructure = new LinkedList<Header>();
        this.copyStructure(mRelLeft.mStructure);

        for (final Header header :mRelRight.mStructure) {
        if (!mStructure.contains(header)) {
            mStructure.add(header);
        }
    }
}

En lineas

this.copyStructure(mRelLeft.mStructure);

y

for (final Header header : mRelRight.mStructure) {

Obtuve el siguiente error:

El campo Relation.mStructure no es visible

Si pongo ambas clases en el mismo paquete, esto funciona perfectamente. ¿Alguien puede explicar este problema?

Respuestas a la pregunta(4)

Su respuesta a la pregunta