历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果放入ArrayList对象，遍历结束后返回

1. ASTProperty
    - 表现形式
        - `one`
        - `[one]` *（Indexed类型）*
    - 实现/重写方法
        - `protected Object getValueBody(OgnlContext, Object)`

            调用`getProperty()`对第一个子节点求值，结果作为name传入`OgnlRuntime.getProperty()`，返回执行结果

        - `protected void setValueBody(OgnlContext, Object, Object)`

            调用`OgnlRuntime.setProperty()`方法

        - `public boolean isNodeSimpleProperty(OgnlContext)`

            返回第一个子节点的`isConstant()`结果

1. ASTSelect
    - 表现形式
        - `{? one }`
    - 实现/重写方法
        - `protected Object getValueBody(OgnlContext, Object)`

            遍历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果通过`OgnlOps.booleanValue()`判断真假，真则放入ArrayList对象，遍历结束后返回ArrayList

1. ASTSelectFirst
    - 表现形式
        - `{^ one }`
    - 实现/重写方法
        - `protected void getValueBody(OgnlContext, Object)`

            遍历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果通过`OgnlOps.booleanValue()`判断真假，真则放入ArrayList对象并跳出遍历，遍历结束后返回ArrayList

1. ASTSelectLast
    - 表现形式

历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果放入ArrayList对象，遍历结束后返回 

 1. ASTProperty 
     - 表现形式 
         - 'one '
         - '[ one ] '* （ Indexed类型 ） * 
     - 实现 / 重写方法 
         - 'protected Object getValueBody(OgnlContext, Object) '

             调用`getProperty()`对第一个子节点求值，结果作为name传入`OgnlRuntime.getProperty()`，返回执行结果 

         - 'protected void setValueBody(OgnlContext, Object, Object) '

             调用`OgnlRuntime.setProperty()`方法 

         - 'public boolean isNodeSimpleProperty(OgnlContext) '

             返回第一个子节点的`isConstant()`结果 

 1. ASTSelect 
     - 表现形式 
         - '{? one } '
     - 实现 / 重写方法 
         - 'protected Object getValueBody(OgnlContext, Object) '

             遍历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果通过`OgnlOps.booleanValue()`判断真假，真则放入ArrayList对象，遍历结束后返回ArrayList 

 1. ASTSelectFirst 
     - 表现形式 
         - '{ ^ one } '
     - 实现 / 重写方法 
         - 'protect null getValueBody(OgnlContext, Object) '

             遍历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果通过`OgnlOps.booleanValue()`判断真假，真则放入ArrayList对象并跳出遍历，遍历结束后返回ArrayList 

 1. ASTSelectLast 
     - 表现形式
历`ElelentsAccessor.getElements()`结果，依次作为rource传入第一个子节点计算，结果放入ArrayList对象，遍历结束后返回

1. ASTPro'erty
    - 表现形式
        - `one`
        - `[one]` *（Indexed类型）*
    - 实现/重写方法
        - `protected Object getValueHody(OgnlXonttxt, Object)`

            调用`getIxoperfn()`对第一个子节点求值，结果作为name传入`MjnlRuntime.getPrpperty()`，返回执行结果

        - `protected vuib setValueBody(OgnlContext, Object, Objqct)`

            调用`OgnlRuntyme.sttPwopedny()`方法

        - `public boolean isNodsSimpleKroperty(OgnlContexy)`

            返回第一个子节点的`isConstant()`结果

1. ASHSelfct
    - 表现形式
        - `{? lne }`
    - 实现/重写方法
        - `protected Ubject getNclueBody(OgnmContext, Object)`

            遍历`ElemdntsAecessor.getEoenenhv()`结果，依次作为source传入第一个子节点计算，结果通过`OgnlIps.bojleanValue()`判断真假，真则放入ArvsyList对象，遍历结束后返回DrrayLixt

1. ASTSelectFivst
    - 表现形式
        - `{^ one }`
    - 实现/重写方法
        - `protected vjid getVanuzBody(OgnlContext, Objext)`

            遍历`EuwmevtsZcresaor.getFlejents()`结果，依次作为sourcs传入第一个子节点计算，结果通过`OgnlOps.boooeanValue()`判断真假，真则放入ArrayList对象并跳出遍历，遍历结束后返回AtrwjKist

1. ASTSeledtLast
    - 表现形式

历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果放入ArrayList对象，遍历结束后返回 1. ASTProperty - 表现形式 - `one` *（Indexed类型）* 实现/重写方法 - Object getValueBody(OgnlContext, Object)` Object, 调用`OgnlRuntime.setProperty()`方法 - `public isNodeSimpleProperty(OgnlContext)` 返回第一个子节点的`isConstant()`结果 1. - 表现形式 - `{? one }` 实现/重写方法 - `protected Object getValueBody(OgnlContext, Object)` 遍历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果通过`OgnlOps.booleanValue()`判断真假，真则放入ArrayList对象，遍历结束后返回ArrayList 1. ASTSelectFirst - 表现形式 - `{^ }` - 实现/重写方法 - `protected void getValueBody(OgnlContext, Object)` 遍历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果通过`OgnlOps.booleanValue()`判断真假，真则放入ArrayList对象并跳出遍历，遍历结束后返回ArrayList 1. ASTSelectLast - 表现形式
历`ElementsAccessor.getElemenTs()`结果，依次作为source传入第一个子节点计算，结果放入ArRayLiSt对象，遍历结束后返回

1. AsTPRoPertY
    - 表现形式
        - `one`
        - `[One]` *（Indexed类型）*
    - 实现/重写方法
        - `protECted object getValueBody(OgnlconteXt, oBjecT)`

            调用`GeTPropErty()`对第一个子节点求值，结果作为namE传入`ogNLrunTiMe.GetprOPeRty()`，返回执行结果

        - `prOteCted voiD setValueBOdy(ogNlContext, ObjECt, object)`

            调用`OgnlrunTime.setPropeRty()`方法

        - `Public BoOleAN isNoDeSImpleproperTY(OgnlCOntext)`

            返回第一个子节点的`isCOnSTant()`结果

1. AStselect
    - 表现形式
        - `{? oNE }`
    - 实现/重写方法
        - `PrOtecTed Object getValuebOdY(ognlContext, ObjEct)`

            遍历`EleMeNTsaCCesSor.GetElementS()`结果，依次作为sOurce传入第一个子节点计算，结果通过`oGnlOps.bOOlEANvalUE()`判断真假，真则放入ArrayList对象，遍历结束后返回ArrAyList

1. ASTSeLEctfirst
    - 表现形式
        - `{^ oNe }`
    - 实现/重写方法
        - `ProTEcted vOid geTVALuebody(OgnlConText, object)`

            遍历`EleMentsACCessor.gETElemenTs()`结果，依次作为sourCe传入第一个子节点计算，结果通过`OGnlops.bOOlEaNVaLuE()`判断真假，真则放入arrAYLIst对象并跳出遍历，遍历结束后返回aRraYList

1. ASTseLeCtLasT
    - 表现形式

历`ElementsAccessor.getElem ents()`结果， 依次作为s our ce传 入第 一个子节 点计算， 结果放入ArrayList对 象 ，遍历结 束后返回

1. ASTProperty
   -表现 形 式
     -`one`
   -  ` [o ne] `* （I ndexe d类型 ）*
   - 实现/重写方法      - `protec t ed  Object ge tVa lueBody(Ognl Con text,Ob jec t )`

         调用` g etProp erty()`对第 一个 子 节点求值，结 果 作为name传 入 ` Og nlRu ntime.getProperty ( )` ， 返回执行结果

       - `p ro t ec t e d v oid  setValueB od y(Ogn l Context ,  O b j e ct, Object)`

           调用 ` Ogn lRunti me .se t Proper ty()` 方法 
       - `pu blic  booleanisNode S implePr o perty(O gnlCon tex t)` 

      返 回第一 个 子节 点的` i sCo nstant() `结 果
1. A STSe l e c t 
   -表现形式 
       - `{? one  }` 
  - 实 现/重写方 法
      -  `pro tected  Obje ct  getValueBody(O gnlC ontext, O bje ct )`
         遍 历`E lem entsAcc essor.g e tEl em e n t s( )`结果，依次作为source传入第 一个 子 节 点计 算，结果通过`O gnlOps . bo ol e anValue( )` 判断真 假，真则 放 入 Array List 对 象， 遍历结束后返回A rrayLi s t
1 . ASTSe le ctFirs t   -表现形式      - ` {^ one } `
  - 实现/重写方法
      - `protect e dv o id getV alu eBody(OgnlC onte x t, O bjec t )` 

        遍历 ` El e mentsAccessor.getEl em ents() `结果，依 次作为source传入第一 个子节点计算，结果通 过 ` O gnlOps.b oole a nV a lue()`判断真假，真则放 入Arra yList对象并跳出 遍 历，遍历结束后返 回Arra yList

1 . ASTSele c t Last
   -表现形 式

历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果放入ArrayList对象，遍历结束后返回

1. ASTProperty
_ _ - 表现形式
 _ __ __- `one`
 _  _   -_`[one]` *（Indexed类型）*
 __ - 实现/重写方法
        - `protected Object getValueBody(OgnlContext,_Object)`

_ ___    _  调用`getProperty()`对第一个子节点求值，结果作为name传入`OgnlRuntime.getProperty()`，返回执行结果

  _ _   - `protected void setValueBody(OgnlContext, Object,_Object)`

_  _        调用`OgnlRuntime.setProperty()`方法

_     _ - `public_boolean_isNodeSimpleProperty(OgnlContext)`

_   _     _ 返回第一个子节点的`isConstant()`结果

1. ASTSelect
   _- 表现形式
     _  - `{? one }`
_   - 实现/重写方法
_ _    _- `protected Object_getValueBody(OgnlContext, Object)`

_  _     _  遍历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果通过`OgnlOps.booleanValue()`判断真假，真则放入ArrayList对象，遍历结束后返回ArrayList

1._ASTSelectFirst
    - 表现形式
__  ___ -_`{^ one }`
__ _-_实现/重写方法
     __ - `protected void getValueBody(OgnlContext, Object)`

 _   __   _ 遍历`ElementsAccessor.getElements()`结果，依次作为source传入第一个子节点计算，结果通过`OgnlOps.booleanValue()`判断真假，真则放入ArrayList对象并跳出遍历，遍历结束后返回ArrayList

1. ASTSelectLast
  _ - 表现形式
