private boolean HelpDelete(DInfo<T> op){
		if(op==null || !(op instanceof DInfo))
			return false;
		boolean res = op.p.si.compareAndSet(op.si, new StateInfo<T>(StateInfo.MARKED,op), op.stamps.siStamp, ++op.stamps.siStamp);
		StateInfo<T> app2 = op.p.si.getReference();
		if(res || (app2.isMarked() && app2.info == op)){
			HelpMarked(op);
			return true;
		}else{
			Help(op.p.si.getReference());
			StateInfo<T> app = op.gp.si.getReference();
			if(app.isDFlag() && app.info == op){
				op.gp.si.compareAndSet(app, new StateInfo<T>(StateInfo.CLEAN,op), op.stamps.gsiStamp, ++op.stamps.gsiStamp);
			}
			return false;
		}	
	}