class XAnnotatedListSpring extends XAnnotatedList {

    /**
     * dom visitor
     */
    protected static final ElementValueVisitor   elementVisitor   = new ElementValueVisitor();
    protected static final AttributeValueVisitor attributeVisitor = new AttributeValueVisitor();

    private XAnnotatedSpringObject               xaso;

    protected XAnnotatedListSpring(XMap xmap, XSetter setter, XGetter getter) {
        super(xmap, setter, getter);
    }

    public XAnnotatedListSpring(XMap xmap, XSetter setter, XGetter getter, XNodeListSpring anno,
                                XAnnotatedSpringObject xaso) {
        super(xmap, setter, getter);
        path = new Path(anno.value());
        trim = anno.trim();
        type = anno.type();
        componentType = anno.componentType();
        this.xaso = xaso;
    }

    @SuppressWarnings("unchecked")
    @Override
    protected Object getValue(Context ctx, Element base) throws Exception {<FILL_FUNCTION_BODY>}

    public void setXaso(XAnnotatedSpringObject xaso) {
        this.xaso = xaso;
    }

    public XAnnotatedSpringObject getXaso() {
        return xaso;
    }
}

        ArrayList<Object> values = new ArrayList<Object>();
        if (path.attribute != null) {
            // attribute list
            DOMHelper.visitNodes(ctx, this, base, path, attributeVisitor, values);
        } else {
            // element list
            DOMHelper.visitNodes(ctx, this, base, path, elementVisitor, values);
        }

        if (type != ArrayList.class) {
            if (type.isArray() && !componentType.isPrimitive()) {
                values.toArray((Object[]) Array.newInstance(componentType, values.size()));
            } else {
                Collection col = (Collection) type.newInstance();
                col.addAll(values);
                return col;
            }
        }
        return values;
    
<methods>public void <init>(com.alipay.sofa.common.xmap.XMap, com.alipay.sofa.common.xmap.XSetter, com.alipay.sofa.common.xmap.XGetter, com.alipay.sofa.common.xmap.annotation.XNodeList) ,public void decode(java.lang.Object, org.w3c.dom.Node, org.w3c.dom.Document, List<java.lang.String>) throws java.lang.Exception<variables>protected static final com.alipay.sofa.common.xmap.AttributeValueVisitor attributeVisitor,public Class<?> componentType,protected static final com.alipay.sofa.common.xmap.ElementVisitor elementListVisitor,protected static final com.alipay.sofa.common.xmap.ElementValueVisitor elementVisitor