// primaryExpression : startNode (node)? -> ^(EXPRESSION startNode (node)?);
 private SpelNodeImpl eatPrimaryExpression() {
   List<SpelNodeImpl> nodes = new ArrayList<SpelNodeImpl>();
   SpelNodeImpl start = eatStartNode(); // always a start node
   nodes.add(start);
   while (maybeEatNode()) {
     nodes.add(pop());
   }
   if (nodes.size() == 1) {
     return nodes.get(0);
   } else {
     return new CompoundExpression(
         toPos(start.getStartPosition(), nodes.get(nodes.size() - 1).getEndPosition()),
         nodes.toArray(new SpelNodeImpl[nodes.size()]));
   }
 }