- [x] I have searched the [issues](https://github.com/apache/dubbo/issues) of this repository and believe that this is not a duplicate.
- [x] I have checked the [FAQ](https://github.com/apache/dubbo/blob/master/FAQ.md) of this repository and believe that this is not a duplicate.

### Environment
branch: master

functions take & put in org.apache.dubbo.common.utils.Stack consider no the situation that index plus mSize is negative .
```java
public E get(int index) {
        if (index >= mSize) {
            throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + mSize);
        }

        return index < 0 ? mElements.get(index + mSize) : mElements.get(index);
    }

public E set(int index, E value) {
        if (index >= mSize) {
            throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + mSize);
        }

        return mElements.set(index < 0 ? index + mSize : index, value);
    }

public E remove(int index) {
        if (index >= mSize) {
            throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + mSize);
        }

        E ret = mElements.remove(index < 0 ? index + mSize : index);
        mSize--;
        return ret;
    }
```
the implementations are not strict.
throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + mSize);
        }
        E ret = mElements.remove(index < 0 ? index + mSize : index);
        mSize--;
        return ret;
    }
    /**
     * get stack size.
     *
     * @return size.
     */
    public int size() {
        return mSize;
    }
    /**
     * is empty.
     *
     * @return empty or not.
     */
    public boolean isEmpty() {
        return mSize == 0;
    }
    /**
     * clear stack.
     */
    public void clear() {
        mSize = 0;
        mElements.clear();
    }
}