- [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.
assertThat(stack.size(), equalTo(1));
        stack.push("two");
        assertThat(stack.get(0), equalTo("one"));
        assertThat(stack.peek(), equalTo("two"));
        assertThat(stack.size(), equalTo(2));
        assertThat(stack.set(0, "three"), equalTo("one"));
        assertThat(stack.remove(0), equalTo("three"));
        assertThat(stack.size(), equalTo(1));
        assertThat(stack.isEmpty(), is(false));
        assertThat(stack.get(0), equalTo("two"));
        assertThat(stack.peek(), equalTo("two"));
        assertThat(stack.pop(), equalTo("two"));
        assertThat(stack.isEmpty(), is(true));
    }
    @Test
    public void testClear() throws Exception {
        Stack<String> stack = new Stack<String>();
        stack.push("one");
        stack.push("two");
        assertThat(stack.isEmpty(), is(false));
        stack.clear();
        assertThat(stack.isEmpty(), is(true));
    }
    @Test
    public void testIllegalPop() throws Exception {
        Assertions.assertThrows(EmptyStackException.class, () -> {
            Stack<String> stack = new Stack<String>();
            stack.pop();
        });
    }