Program: 16236
Project: 16236
Buggy source:
public void tieValue(Object comp,Object base,Object script,Object propName,Object value){
  if (base == null) {
    final Map<Object,TrackerNode> bindingNodes=_compMap.get(comp);
    if (bindingNodes != null) {
      final TrackerNode node=bindingNodes.get(script);
      if (node != null) {
        ((TrackerNodeImpl)node).setReferenceBinding((ReferenceBinding)((Component)comp).getAttribute(BinderImpl.REF_BINDING));
        if (value != null) {
          addBeanMap(node,value);
        }
 else {
          removeAllBeanMap(node);
          addNullMap(node);
        }
      }
    }
  }
 else {
    final Set<TrackerNode> baseNodes=getAllTrackerNodesByBean(base);
    if (baseNodes != null) {
      final Set<TrackerNode> propNodes=new LinkedHashSet<TrackerNode>();
      Object bean=null;
      for (      TrackerNode baseNode : baseNodes) {
        final TrackerNode node=baseNode.getDependent(script);
        if (node == null) {
          continue;
        }
        if (bean == null) {
          bean=node.getBean();
        }
        propNodes.add(node);
        if (BindELContext.isBracket((String)script)) {
          ((TrackerNodeImpl)baseNode).tieProperty(propName,script);
        }
      }
      @SuppressWarnings("String_Node_Str") final Set<TrackerNode> beanNodes=(Set<TrackerNode>)(bean == null ? Collections.emptySet() : getAllTrackerNodesByBean(bean));
      if (bean != null) {
        beanNodes.removeAll(propNodes);
      }
      final Set<ReferenceBinding> targetRefBindings=collectReferenceBindings(propNodes);
      if (value != null) {
        for (        TrackerNode node : propNodes) {
          addBeanMap(node,value);
        }
        for (        TrackerNode node : beanNodes) {
          final ReferenceBinding rbinding=((TrackerNodeImpl)node).getReferenceBinding();
          if (rbinding == null || targetRefBindings.contains(rbinding)) {
            addBeanMap(node,value);
          }
        }
      }
 else {
        for (        TrackerNode node : propNodes) {
          removeAllBeanMap(node);
        }
        for (        TrackerNode node : beanNodes) {
          final ReferenceBinding rbinding=((TrackerNodeImpl)node).getReferenceBinding();
          if (rbinding == null) {
            removeAllBeanMap(node);
          }
 else           if (targetRefBindings.contains(rbinding)) {
            addBeanMap(node,rbinding);
          }
        }
      }
    }
  }
}

Fixed version (ground truth):
public void tieValue(Object comp,Object base,Object script,Object propName,Object value){
  if (base == null) {
    final Map<Object,TrackerNode> bindingNodes=_compMap.get(comp);
    if (bindingNodes != null) {
      final TrackerNode node=bindingNodes.get(script);
      if (node != null) {
        if (value != null) {
          addBeanMap(node,value);
        }
 else {
          removeAllBeanMap(node);
          addNullMap(node);
        }
      }
    }
  }
 else {
    final Set<TrackerNode> baseNodes=getAllTrackerNodesByBean(base);
    if (baseNodes != null) {
      final Set<TrackerNode> propNodes=new LinkedHashSet<TrackerNode>();
      for (      TrackerNode baseNode : baseNodes) {
        final TrackerNode node=baseNode.getDependent(script);
        if (node == null) {
          continue;
        }
        propNodes.add(node);
        if (BindELContext.isBracket((String)script)) {
          ((TrackerNodeImpl)baseNode).tieProperty(propName,script);
        }
      }
      if (value != null) {
        for (        TrackerNode node : propNodes) {
          addBeanMap(node,value);
        }
      }
 else {
        for (        TrackerNode node : propNodes) {
          removeAllBeanMap(node);
        }
      }
    }
  }
}