put(reference, object);
this.put(reference, object);
        protected void track(ServiceReference reference)        {            Object object = get(reference);            if (object != null)     /* we are already tracking the service */            {                if (DEBUG)                {                    System.out.println("ServiceTracker.Tracked.track[modified]: "+reference);                }                /* Call customizer outside of synchronized region */                customizer.modifiedService(reference, object);                /* If the customizer throws an unchecked exception, it is safe to let it propagate */                return;            }            synchronized (this)            {                if (adding.indexOf(reference, 0) != -1) /* if this service is already                                                         * in the process of being added. */                {                    if (DEBUG)                    {                        System.out.println("ServiceTracker.Tracked.track[already adding]: "+reference);                    }                    return;                }                adding.addElement(reference);   /* mark this service is being added */            }            if (DEBUG)            {                System.out.println("ServiceTracker.Tracked.track[adding]: "+reference);            }            boolean becameUntracked = false;            /* Call customizer outside of synchronized region */            try            {                object = customizer.addingService(reference);                /* If the customizer throws an unchecked exception, it will propagate after the finally */            }            finally            {                synchronized (this)                {                    if (adding.removeElement(reference))    /* if the service was not untracked                                                             * during the customizer callback */                    {                        if (object != null)                        {                            put(reference, object);                            trackingCount++;            /* increment modification count */                            notifyAll();                        }                    }                    else                    {                        becameUntracked = true;                    }                }            }            /* The service became untracked during			 * the customizer callback.			 */            if (becameUntracked)            {                if (DEBUG)                {                    System.out.println("ServiceTracker.Tracked.track[removed]: "+reference);                }                /* Call customizer outside of synchronized region */                customizer.removedService(reference, object);                /* If the customizer throws an unchecked exception, it is safe to let it propagate */            }        }