class XAnnotatedSpring extends XAnnotatedMember {

    public XAnnotatedSpringObject xaso;

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

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

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

        // scalar field
        if (type == Element.class) {
            // allow DOM elements as values
            return base;
        }
        return XMapSpringUtil.getSpringObject(this, xaso.getApplicationContext(), base);
    
<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.XNode) ,public void decode(java.lang.Object, org.w3c.dom.Node, org.w3c.dom.Document, List<java.lang.String>) throws java.lang.Exception,public void process(com.alipay.sofa.common.xmap.Context, org.w3c.dom.Element) throws java.lang.Exception,public void process(com.alipay.sofa.common.xmap.Context, Map<java.lang.String,java.lang.Object>, java.lang.String) throws java.lang.Exception<variables>public boolean cdata,public final non-sealed com.alipay.sofa.common.xmap.XGetter getter,public com.alipay.sofa.common.xmap.Path path,public final non-sealed com.alipay.sofa.common.xmap.XSetter setter,public boolean trim,public Class#RAW type,public com.alipay.sofa.common.xmap.XValueFactory valueFactory,public com.alipay.sofa.common.xmap.XAnnotatedObject xao,public final non-sealed com.alipay.sofa.common.xmap.XMap xmap