Verificar atributo de una subclase

Me topé con esa situación pero no sé cómo manejarlo de la manera correcta:

class Myclass { }
class MyclassWithAwesomeStuff extends Myclass {
    public boolean awesomeStuff;
}

Estoy guardando los objetos de Myclass en un arraylist y los repito más tarde a través de esta lista:

for(Myclass m : list) {
    //here I want to check if awesomeStuff is true, in case it is a MyclasswithAwesomeStuff
}

El problema aquí es: la clase principal Myclass no conoce el atributo awesomeStuff (y no debería hacerlo porque es una característica que viene solo con la clase derivada). Pero, ¿cómo puedo manejar esto? El problema es que el arraylist contiene elementos Myclass y MyclassWithAwesomeStuff y el bucle foreach los convierte siempre a Myclass.

Me pregunto si esto es un fallo de diseño?

//EDITAR:

Bueno, para hacer mi pregunta un poco más tangible, aquí hay más información. Estoy tratando de construir una pequeña cafetería:

class Coffee { }
class CoffeeMix extends Coffee {
    public boolean shaken;
}

Estoy guardando los artículos de café en una lista de matriz:

ArrayList<Coffee> coffees = new ArrayList<Coffee>();

Así que en esta lista de arreglos existen objetos normales de café y objetos de mezcla de café. Ahora quiero mostrar todos los objetos de mezcla de café, que se agitan:

for(Coffee c : coffees) {
    //here is the same problem as above
}

Como puedo ver en las respuestas / comentarios: instanceof parece ser una mala idea, porque atornilla la idea detrás de eso y una interfaz que ambas clases implementan también es una mala idea, porque un café normal no puede ser sacudido. Entonces, ¿cómo manejar esto?

Respuestas a la pregunta(3)

Su respuesta a la pregunta