private void releaseServiceWithoutCheck(BeanContextChild child,
            BCSSChild bcssChild, Object requestor, Object service,
            boolean callRevokedListener) {

        if (bcssChild.serviceRecords == null
                || bcssChild.serviceRecords.isEmpty()) {
            return;
        }

        synchronized (child) {
            // scan record
            for (Iterator iter = bcssChild.serviceRecords.iterator(); iter
                    .hasNext();) {
                ServiceRecord rec = (ServiceRecord) iter.next();
                if (rec.requestor == requestor && rec.service == service) {
                    // release service
                    rec.provider.releaseService(getBeanContextServicesPeer(),
                            requestor, service);
                    // call service revoked listener
                    if (callRevokedListener && rec.revokedListener != null) {
                        rec.revokedListener
                                .serviceRevoked(new BeanContextServiceRevokedEvent(
                                        getBeanContextServicesPeer(),
                                        rec.serviceClass, true));
                    }
                    // remove record
                    iter.remove();
                    break;
                }
            }
        }
    }