@Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }

        ExtensionDefinition<?> other = (ExtensionDefinition<?>) obj;
        if (!StringUtils.equals(name, other.name)) {
            return false;
        }
        if (!serviceClass.equals(other.serviceClass)) {
            return false;
        }
        if (!order.equals(other.order)) {
            return false;
        }
        return scope.equals(other.scope);
    }
@Test
    public void testEquals() {
        ExtensionDefinition<ChineseHello> definition
                = new ExtensionDefinition<>("abc", 1, Scope.PROTOTYPE, ChineseHello.class);
        ExtensionDefinition<ChineseHello> definition2
                = new ExtensionDefinition<>("abc", 1, Scope.PROTOTYPE, ChineseHello.class);
        Assertions.assertEquals(definition2, definition);
    }