public Object evaluate(
     EventBean[] eventsPerStream, boolean isNewData, ExprEvaluatorContext exprEvaluatorContext) {
   Object value = reader.getValue();
   if (isPrimitive) {
     return value;
   }
   if (value == null) {
     return null;
   }
   EventBean theEvent = (EventBean) value;
   if (optSubPropName == null) {
     return theEvent.getUnderlying();
   }
   return eventTypeGetter.get(theEvent);
 }
 public Object getValue() {
   if (reader == null) {
     throw new EPException("Variable expression node has not been initialized");
   }
   return reader.getValue();
 }