Program: 155096
Project: 155096
Buggy source:
@Override protected String exec(AppCommandParser parser,Session session,Output out) throws ShellException, RemoteException {
  assertCurrentIsNode(session);
  Node node=this.getCurrent(session).asNode();
  boolean caseInsensitiveFilters=parser.options().containsKey("String_Node_Str");
  boolean looseFilters=parser.options().containsKey("String_Node_Str");
  Object[] relationshipTypes=parseRelationshipTypes(parser,out,caseInsensitiveFilters,looseFilters);
  if (relationshipTypes.length == 0) {
    out.println("String_Node_Str");
    return null;
  }
  StopEvaluator stopEvaluator=parseStopEvaluator(parser);
  ReturnableEvaluator returnableEvaluator=parseReturnableEvaluator(parser);
  Order order=parseOrder(parser);
  String filterString=parser.options().get("String_Node_Str");
  Map<String,Object> filterMap=filterString != null ? parseFilter(filterString,out) : null;
  String commandToRun=parser.options().get("String_Node_Str");
  String[] commandsToRun=commandToRun != null ? commandToRun.split(Pattern.quote("String_Node_Str")) : new String[0];
  for (  Node traversedNode : node.traverse(order,stopEvaluator,returnableEvaluator,relationshipTypes)) {
    boolean hit=false;
    if (filterMap == null) {
      hit=true;
    }
 else {
      Map<String,Boolean> matchPerFilterKey=new HashMap<String,Boolean>();
      for (      String key : traversedNode.getPropertyKeys()) {
        for (        Map.Entry<String,Object> filterEntry : filterMap.entrySet()) {
          String filterKey=filterEntry.getKey();
          if (matchPerFilterKey.containsKey(filterKey)) {
            continue;
          }
          if (matches(newPattern(filterKey,caseInsensitiveFilters),key,caseInsensitiveFilters,looseFilters)) {
            Object value=traversedNode.getProperty(key);
            String filterPattern=filterEntry.getValue() != null ? filterEntry.getValue().toString() : null;
            if (matches(newPattern(filterPattern,caseInsensitiveFilters),value.toString(),caseInsensitiveFilters,looseFilters)) {
              matchPerFilterKey.put(filterKey,true);
            }
          }
        }
      }
      if (matchPerFilterKey.size() == filterMap.size()) {
        hit=true;
      }
    }
    if (hit) {
      out.println(getDisplayName(getServer(),session,traversedNode));
      Map<String,Object> data=new HashMap<String,Object>();
      data.put("String_Node_Str",traversedNode.getId());
      for (      String command : commandsToRun) {
        String line=templateString(command,"String_Node_Str",data);
        getServer().interpretLine(line,session,out);
      }
      out.println();
    }
  }
  return null;
}

Fixed version (ground truth):
@Override protected String exec(AppCommandParser parser,Session session,Output out) throws ShellException, RemoteException {
  assertCurrentIsNode(session);
  Node node=this.getCurrent(session).asNode();
  boolean caseInsensitiveFilters=parser.options().containsKey("String_Node_Str");
  boolean looseFilters=parser.options().containsKey("String_Node_Str");
  Object[] relationshipTypes=parseRelationshipTypes(parser,out,caseInsensitiveFilters,looseFilters);
  if (relationshipTypes.length == 0) {
    out.println("String_Node_Str");
    return null;
  }
  StopEvaluator stopEvaluator=parseStopEvaluator(parser);
  ReturnableEvaluator returnableEvaluator=parseReturnableEvaluator(parser);
  Order order=parseOrder(parser);
  String filterString=parser.options().get("String_Node_Str");
  Map<String,Object> filterMap=filterString != null ? parseFilter(filterString,out) : null;
  String commandToRun=parser.options().get("String_Node_Str");
  String[] commandsToRun=commandToRun != null ? commandToRun.split(Pattern.quote("String_Node_Str")) : new String[0];
  for (  Node traversedNode : node.traverse(order,stopEvaluator,returnableEvaluator,relationshipTypes)) {
    boolean hit=false;
    if (filterMap == null) {
      hit=true;
    }
 else {
      Map<String,Boolean> matchPerFilterKey=new HashMap<String,Boolean>();
      for (      String key : traversedNode.getPropertyKeys()) {
        for (        Map.Entry<String,Object> filterEntry : filterMap.entrySet()) {
          String filterKey=filterEntry.getKey();
          if (matchPerFilterKey.containsKey(filterKey)) {
            continue;
          }
          if (matches(newPattern(filterKey,caseInsensitiveFilters),key,caseInsensitiveFilters,looseFilters)) {
            Object value=traversedNode.getProperty(key);
            String filterPattern=filterEntry.getValue() != null ? filterEntry.getValue().toString() : null;
            if (matches(newPattern(filterPattern,caseInsensitiveFilters),value.toString(),caseInsensitiveFilters,looseFilters)) {
              matchPerFilterKey.put(filterKey,true);
            }
          }
        }
      }
      if (matchPerFilterKey.size() == filterMap.size()) {
        hit=true;
      }
    }
    if (hit) {
      out.println(getDisplayName(getServer(),session,traversedNode,true));
      Map<String,Object> data=new HashMap<String,Object>();
      data.put("String_Node_Str",traversedNode.getId());
      for (      String command : commandsToRun) {
        String line=templateString(command,"String_Node_Str",data);
        getServer().interpretLine(line,session,out);
      }
      out.println();
    }
  }
  return null;
}