Program: 15813
Project: 15813
Buggy source:
public Object getValue(ELContext ctx,Object base,Object property) throws PropertyNotFoundException, ELException {
  Object value=null;
  if (base == null) {
    if (_pathResolver == null) {
      _pathResolver=new PathELResolver();
    }
    _pathResolver.getValue(ctx,base,property);
    if (value == null && _ctx instanceof SimpleBindXelContext) {
      SimpleBindXelContext bctxt=(SimpleBindXelContext)_ctx;
      if ("String_Node_Str".equals(property)) {
        value=bctxt.getSelf();
      }
      if (Objects.equals(bctxt.getViewModelName(),property))       value=bctxt.getViewModel();
    }
    if (value == null) {
      value=resolve(ctx,base,property);
    }
    if (value == null)     value=getImplicitResolver().getValue(ctx,base,property);
    if (value == null) {
      value=super.getELResolver().getValue(ctx,base,property);
    }
    if (value != null)     ctx.setPropertyResolved(true);
  }
 else {
    value=super.getValue(ctx,base,property);
  }
  final BindELContext bctx;
  ELContext ec=((EvaluationContext)ctx).getELContext();
  if (ec instanceof BindELContext)   bctx=(BindELContext)ec;
 else {
    bctx=(BindELContext)((EvaluationContext)ec).getELContext();
  }
  Object ignoreRefVal=bctx.getAttribute(BinderImpl.IGNORE_REF_VALUE);
  final ReferenceBinding rbinding=value instanceof ReferenceBinding ? (ReferenceBinding)value : null;
  if (rbinding != null) {
    if (Boolean.TRUE.equals(ignoreRefVal)) {
      return rbinding;
    }
    value=rbinding.getValue(bctx);
    final Object invalidateRef=bctx.getAttribute(BinderCtrl.INVALIDATE_REF_VALUE);
    if ("String_Node_Str".equalsIgnoreCase(String.valueOf(invalidateRef)))     rbinding.invalidateCache();
  }
  tieValue(ctx,base,property,rbinding != null ? rbinding : value,false);
  return value;
}

Fixed version (ground truth):
public Object getValue(ELContext ctx,Object base,Object property) throws PropertyNotFoundException, ELException {
  Object value=null;
  if (base == null) {
    if (_pathResolver == null) {
      _pathResolver=new PathELResolver();
    }
    _pathResolver.getValue(ctx,base,property);
    if (value == null && _ctx instanceof SimpleBindXelContext) {
      SimpleBindXelContext bctxt=(SimpleBindXelContext)_ctx;
      if ("String_Node_Str".equals(property)) {
        value=bctxt.getSelf();
      }
      if (Objects.equals(bctxt.getViewModelName(),property))       value=bctxt.getViewModel();
    }
    if (value == null) {
      value=resolve(ctx,base,property);
    }
    if (value == null)     value=getImplicitResolver().getValue(ctx,base,property);
    if (value == null) {
      value=super.getELResolver().getValue(ctx,base,property);
    }
    if (value != null)     ctx.setPropertyResolved(true);
  }
 else {
    value=super.getValue(ctx,base,property);
  }
  final BindELContext bctx;
  ELContext ec=((EvaluationContext)ctx).getELContext();
  if (ec instanceof BindELContext)   bctx=(BindELContext)ec;
 else {
    bctx=(BindELContext)((EvaluationContext)ec).getELContext();
  }
  Object ignoreRefVal=bctx.getAttribute(BinderImpl.IGNORE_REF_VALUE);
  final ReferenceBinding rbinding=value instanceof ReferenceBinding ? (ReferenceBinding)value : null;
  if (rbinding != null) {
    if (property.equals(rbinding.getPropertyString())) {
      throw new RuntimeException("String_Node_Str" + property + "String_Node_Str");
    }
    if (Boolean.TRUE.equals(ignoreRefVal)) {
      return rbinding;
    }
    value=rbinding.getValue(bctx);
    final Object invalidateRef=bctx.getAttribute(BinderCtrl.INVALIDATE_REF_VALUE);
    if ("String_Node_Str".equalsIgnoreCase(String.valueOf(invalidateRef)))     rbinding.invalidateCache();
  }
  tieValue(ctx,base,property,rbinding != null ? rbinding : value,false);
  return value;
}