poo – LLamar a una clase de otra clase ArrayList en JAVA

Hola chicos requiero de su oracional con una guía para finalizar:

En lo siguiente se muestra la información lo mas clara posible para identificar con la facilidad el requerimiento que solicito.

Clase Directorio

package com.cmc.entidades;

import java.util.ArrayList;
import java.util.Date;

public class Directorio {

// Atributos
private ArrayList<Contacto> contactos;
private Date fechaModifacion;

// Metodos
public boolean agregarContacto(Contacto contacto) {

    contactos.add(contacto);
    return true;
}

public Contacto buscarPorCedula(String cedula) {

    Contacto result = null;
    Contacto contact = null;
    for (int i = 0; i < contactos.size(); i++) {
        contact = contactos.get(i);
        if (cedula.equals(contact.getCedula())) {
            result = contact;
        }
    }
    return result;
}

public int contarPerdidos() {
    int contar = 0;

    Contacto contact = null;
    for (int i = 0; i < contactos.size(); i++) {
        contact = contactos.get(i);
        if (contact.getDireccion() == null) {
            contar++;

        }

    }

    return contar;
}

public int contarFijos() {

    int contar = 0;

    Contacto contact = null;
    for (int i = 0; i < contactos.size(); i++) {
        contact = contactos.get(i);
        if (contact.equals(contactos.equals("c"))) {
            contar++;

        }

    }

    return contar;
}

// Constructor
public Directorio() {
    super();
    contactos = new ArrayList<Contacto>();

}

// Getters && Setters
public ArrayList<Contacto> getContactos() {
    return contactos;
}

public void setContactos(ArrayList<Contacto> contactos) {
    this.contactos = contactos;
}

public Date getFechaModifacion() {
    return fechaModifacion;
}

public void setFechaModifacion(Date fechaModifacion) {
    this.fechaModifacion = fechaModifacion;
}

}

Clase Contacto

package com.cmc.entidades;

import java.util.ArrayList;

public class Contacto {

// Atributos
private String cedula;
private String nombre;
private String apellido;
private Direccion direccion;
private ArrayList<Telefono> telefonos;

// Metodos

public void agregarTelefono(Telefono telefono) {

    telefonos.add(telefono);
}

public void mostrarTelefonos() {
    Telefono telf = null;
    for (int i = 0; i < telefonos.size(); i++) {
        telf = telefonos.get(i);
        if (telf.getEstado().equals("C")) {
            System.out.println(telf.getTipo() + " - " + telf.getNombre());
        }
    }
}

public ArrayList<Telefono> recuperarIncorrectos() {
    ArrayList<Telefono> resultado = new ArrayList<Telefono>();

    Telefono telf = null;
    for (int i = 0; i < telefonos.size(); i++) {
        telf = telefonos.get(i);
        if (telf.getEstado().equals("E")) {
            resultado.add(telf);
        }
    }
    return resultado;
}

// Constructor
public Contacto(String cedula, String nombre, String apellido) {
    super();
    telefonos = new ArrayList<Telefono>();
    this.cedula = cedula;
    this.nombre = nombre;
    this.apellido = apellido;

}

public void imprimir() {

    System.out.println("****" + nombre + " " + apellido + "*******");
    if (this.getDireccion() != null) {
        System.out.println(
                "Direccion: " + this.direccion.getCallePrincipal() + " y " + 
 this.direccion.getCalleSecundaria());
    } else {
        System.out.println("No tienne asociada una direccion");
    }
}

// Getters && Setters

public String getCedula() {
    return cedula;
}

public void setCedula(String cedula) {
    this.cedula = cedula;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public String getApellido() {
    return apellido;
}

public void setApellido(String apellido) {
    this.apellido = apellido;
}

public Direccion getDireccion() {
    return direccion;
}

public void setDireccion(Direccion direccion) {
    this.direccion = direccion;
}

public ArrayList<Telefono> getTelefonos() {
    return telefonos;
}

public void setTelefonos(ArrayList<Telefono> telefonos) {
    this.telefonos = telefonos;
}

}

Clase Main

package com.cmc.test;

import com.cmc.entidades.Contacto;
import com.cmc.entidades.Direccion;
import com.cmc.entidades.Directorio;
import com.cmc.entidades.Telefono;

public class TestContarFijos {
public static void main(String() args) {
    Directorio directorio = new Directorio();
    Contacto c1=new Contacto("1234","Armando","Broncas");
    c1.setDireccion(new Direccion("ABC", "XYZ"));
    c1.agregarTelefono(new Telefono("0992920306","Movil"));
    c1.agregarTelefono(new Telefono("1234561","Convencional"));
    
    Contacto c2=new Contacto("234","Mark","Anthony");
    c2.setDireccion(new Direccion("ABC", "XYZ"));
    directorio.agregarContacto(c2);
    c2.agregarTelefono(new Telefono("099292030","Movil"));
    c2.agregarTelefono(new Telefono("1234560","CONVENCIONAL"));

    Contacto c3=new Contacto("9897","Nicolas","Mora");
    c3.setDireccion(new Direccion("ABC", "XYZ"));
    directorio.agregarContacto(c2);
    c3.agregarTelefono(new Telefono("5432231","Fijo"));
    c3.agregarTelefono(new Telefono("0992920307","Movil"));
    
    directorio.agregarContacto(c1);
    directorio.agregarContacto(c2);
    directorio.agregarContacto(c3);
    
    
    System.out.println("Fijos:"+directorio.contarFijos());
}
}

El resultado que me brinda es:

introducir la descripción de la imagen aquí

El resultado que debe ser:

introducir la descripción de la imagen aquí

*IMPORTANTE: No se puede modificar la clase Main

El ejercicio es :

En directorio agregar un método contarFijos que retorna cuantos contactos tienen teléfonos convencional y ademas están en estado C.

MI duda es como yo llamo a la clase telefono desde contactos para poder hacer la condicional??*