Program: 146710
Project: 146710
Buggy source:
@Override public void init(CommCarePlatform platform,SessionWrapper session,MockUserDataSandbox sandbox){
  String root=deriveMenuRoot(session);
  this.mPlatform=platform;
  this.mSandbox=sandbox;
  Vector<MenuDisplayable> choices=new Vector<MenuDisplayable>();
  Hashtable<String,Entry> map=platform.getMenuMap();
  EvaluationContext ec=null;
  for (  Suite s : platform.getInstalledSuites()) {
    for (    Menu m : s.getMenus()) {
      String xpathExpression="String_Node_Str";
      try {
        XPathExpression relevance=m.getMenuRelevance();
        if (m.getMenuRelevance() != null) {
          xpathExpression=m.getMenuRelevanceRaw();
          ec=session.getEvaluationContext(m.getId());
          if (XPathFuncExpr.toBoolean(relevance.eval(ec)).booleanValue() == false) {
            continue;
          }
        }
        if (m.getId().equals(root)) {
          if (mTitle == null) {
            try {
              mTitle=m.getName().evaluate();
            }
 catch (            Exception e) {
              e.printStackTrace();
            }
          }
          for (          String command : m.getCommandIds()) {
            xpathExpression="String_Node_Str";
            XPathExpression mRelevantCondition=m.getCommandRelevance(m.indexOfCommand(command));
            if (mRelevantCondition != null) {
              xpathExpression=m.getCommandRelevanceRaw(m.indexOfCommand(command));
              ec=session.getEvaluationContext();
              Object ret=mRelevantCondition.eval(ec);
              try {
                if (!XPathFuncExpr.toBoolean(ret)) {
                  continue;
                }
              }
 catch (              XPathTypeMismatchException e) {
                e.printStackTrace();
                error("String_Node_Str" + ret);
              }
              if (!XPathFuncExpr.toBoolean(ret)) {
                continue;
              }
            }
            Entry e=map.get(command);
            if (e.getXFormNamespace() == null) {
              if (session.getNeededDatum(e) == null) {
                continue;
              }
            }
            choices.add(e);
          }
          continue;
        }
        if (root.equals(m.getRoot())) {
          boolean idExists=false;
          for (          Object o : choices) {
            if (o instanceof Menu) {
              if (((Menu)o).getId().equals(m.getId())) {
                idExists=true;
                break;
              }
            }
          }
          if (!idExists) {
            choices.add(m);
          }
        }
      }
 catch (      XPathSyntaxException xpse) {
        error(xpse);
        return;
      }
catch (      XPathException xpe) {
        error(xpe);
        return;
      }
    }
  }
  this.mChoices=new MenuDisplayable[choices.size()];
  choices.copyInto(mChoices);
  setTitle(mTitle);
}

Fixed version (ground truth):
@Override public void init(CommCarePlatform platform,SessionWrapper session,MockUserDataSandbox sandbox) throws CommCareSessionException {
  String root=deriveMenuRoot(session);
  this.mPlatform=platform;
  this.mSandbox=sandbox;
  Vector<MenuDisplayable> choices=new Vector<MenuDisplayable>();
  Hashtable<String,Entry> map=platform.getMenuMap();
  EvaluationContext ec=null;
  for (  Suite s : platform.getInstalledSuites()) {
    for (    Menu m : s.getMenus()) {
      String xpathExpression="String_Node_Str";
      try {
        XPathExpression relevance=m.getMenuRelevance();
        if (m.getMenuRelevance() != null) {
          xpathExpression=m.getMenuRelevanceRaw();
          ec=session.getEvaluationContext(m.getId());
          if (XPathFuncExpr.toBoolean(relevance.eval(ec)).booleanValue() == false) {
            continue;
          }
        }
        if (m.getId().equals(root)) {
          if (mTitle == null) {
            try {
              mTitle=m.getName().evaluate();
            }
 catch (            Exception e) {
              e.printStackTrace();
            }
          }
          for (          String command : m.getCommandIds()) {
            xpathExpression="String_Node_Str";
            XPathExpression mRelevantCondition=m.getCommandRelevance(m.indexOfCommand(command));
            if (mRelevantCondition != null) {
              xpathExpression=m.getCommandRelevanceRaw(m.indexOfCommand(command));
              ec=session.getEvaluationContext();
              Object ret=mRelevantCondition.eval(ec);
              try {
                if (!XPathFuncExpr.toBoolean(ret)) {
                  continue;
                }
              }
 catch (              XPathTypeMismatchException e) {
                e.printStackTrace();
                throw new CommCareSessionException("String_Node_Str" + ret,e);
              }
              if (!XPathFuncExpr.toBoolean(ret)) {
                continue;
              }
            }
            Entry e=map.get(command);
            if (e.getXFormNamespace() == null) {
              if (session.getNeededDatum(e) == null) {
                continue;
              }
            }
            choices.add(e);
          }
          continue;
        }
        if (root.equals(m.getRoot())) {
          boolean idExists=false;
          for (          Object o : choices) {
            if (o instanceof Menu) {
              if (((Menu)o).getId().equals(m.getId())) {
                idExists=true;
                break;
              }
            }
          }
          if (!idExists) {
            choices.add(m);
          }
        }
      }
 catch (      XPathSyntaxException xpse) {
        throw new CommCareSessionException("String_Node_Str",xpse);
      }
catch (      XPathException xpe) {
        throw new CommCareSessionException("String_Node_Str",xpe);
      }
    }
  }
  this.mChoices=new MenuDisplayable[choices.size()];
  choices.copyInto(mChoices);
  setTitle(mTitle);
}