@Override
    public void onStatusChange(DiagnosisStatus<Serializable> status) {
        
        // First, update our values
        this.currentStatus.put(status.getChannel(), status.getValue());
        
        // Next match status agains on status
        Set<Class<? extends DiagnosisChannelID<?>>> keySet = this.onRequirements.keySet();
        for (Class<? extends DiagnosisChannelID<?>> c : keySet) {
            final Matcher requirement = this.onRequirements.get(c);
            final Object is = this.currentStatus.get(c);
            
            if(!requirement.matches(is)) {
                announceState(STATE.OFF);
                return;
            }
        }
        
        // Match dependant conditions
        for (@SuppressWarnings("unused") TwoStateCondition twoState : this.requiredConditions) {
            // FIXME: Aarrgh. javac failes on the following line while eclipse doesn't ...
            //if(!$(twoState.getRequiredChannels()).contains(status.getChannel())) continue;
            // twoState.onStatusChange(status);
            
            /*
            if(twoState.getState() == STATE.OFF) {
                announceState(STATE.OFF);
                return;
            }
            */
        }
        
        announceState(STATE.ON);
    }