if (value==null || (oldValue!=null && !value.equals(oldValue)))
if (value!=null || (oldValue!=null && !value.equals(oldValue)))
        public synchronized void setAttribute(String name, Object value)        {            if (value==null)            {                removeAttribute(name);                return;            }            if (_invalid)                throw new IllegalStateException();            if (_values==null)                _values=newAttributeMap();            Object oldValue=_values.put(name,value);            if (value==null || (oldValue!=null && !value.equals(oldValue)))            {                unbindValue(name,oldValue);                bindValue(name,value);                if (_sessionAttributeListeners!=null)                {                    HttpSessionBindingEvent event=new HttpSessionBindingEvent(this,name,oldValue==null?value:oldValue);                    for (int i=0; i<LazyList.size(_sessionAttributeListeners); i++)                    {                        HttpSessionAttributeListener l=(HttpSessionAttributeListener)LazyList.get(_sessionAttributeListeners,i);                        if (oldValue==null)                            l.attributeAdded(event);                        else if (value==null)                            l.attributeRemoved(event);                        else                            l.attributeReplaced(event);                    }                }            }        }