Program: 24072
Project: 24072
Buggy source:
private void readSearchParams(ResourceDefn root2,Sheet sheet,boolean forProfile) throws Exception {
  if (sheet != null) {
    tabfmt.sheet("String_Node_Str");
    tabfmt.column("String_Node_Str");
    tabfmt.column("String_Node_Str");
    tabfmt.column("String_Node_Str");
    tabfmt.column("String_Node_Str");
    tabfmt.column("String_Node_Str");
    tabfmt.column("String_Node_Str");
    for (int row=0; row < sheet.rows.size(); row++) {
      tabfmt.row();
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      if (!sheet.hasColumn(row,"String_Node_Str"))       throw new Exception("String_Node_Str" + getLocation(row));
      String n=sheet.getColumn(row,"String_Node_Str");
      if (!n.startsWith("String_Node_Str")) {
        if (!sheet.hasColumn(row,"String_Node_Str"))         throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
        if (n.endsWith("String_Node_Str") || n.endsWith("String_Node_Str"))         throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
        if (root2.getSearchParams().containsKey(n))         throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
        String d=sheet.getColumn(row,"String_Node_Str");
        SearchType t=readSearchType(sheet.getColumn(row,"String_Node_Str"),row);
        SearchParameter.XPathUsageType pu=readSearchXPathUsage(sheet.getColumn(row,"String_Node_Str"),row);
        if (Utilities.noString(sheet.getColumn(row,"String_Node_Str")) && !root2.getName().equals("String_Node_Str"))         throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
        List<String> pn=new ArrayList<String>();
        SearchParameterDefn sp=null;
        if (t == SearchType.composite) {
          String[] pl=sheet.getColumn(row,"String_Node_Str").split("String_Node_Str");
          if (Utilities.noString(d))           throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
          for (          String pi : pl) {
            String p=pi.trim();
            if (!root2.getSearchParams().containsKey(p)) {
              boolean found=false;
              if (p.endsWith("String_Node_Str"))               for (              String pan : root2.getSearchParams().keySet()) {
                if (pan.startsWith(p.substring(0,p.length() - 3)))                 found=true;
              }
              if (!found)               throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ p+ "String_Node_Str"+ getLocation(row));
            }
            pn.add(p);
            sp=new SearchParameterDefn(n,d,t,pu);
            sp.getComposites().addAll(pn);
          }
        }
 else {
          String[] pl=sheet.getColumn(row,"String_Node_Str").split("String_Node_Str");
          for (          String pi : pl) {
            String p=pi.trim();
            ElementDefn e=null;
            if (!Utilities.noString(p) && !p.startsWith("String_Node_Str") && !p.startsWith("String_Node_Str")&& definitions != null) {
              e=root2.getRoot().getElementForPath(trimIndexes(p),definitions,"String_Node_Str",true);
            }
            if (Utilities.noString(d) && e != null)             d=e.getShortDefn();
            if (p.startsWith("String_Node_Str")) {
              String url=extractExtensionUrl(p);
              StructureDefinition ex=extensionDefinitions.get(url);
              if (ex == null)               throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ url+ "String_Node_Str"+ getLocation(row));
              if (Utilities.noString(d))               d=ex.getDescription();
              pn.add(p);
            }
            if (d == null)             throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
            if (e != null)             pn.add(p);
            if (t == SearchType.reference) {
              if (e == null && !forProfile && !sheet.hasColumn(row,"String_Node_Str"))               throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
              if (!forProfile && e != null && (!e.hasType("String_Node_Str")) && (!e.hasType("String_Node_Str")))               throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ e.typeCode());
            }
 else {
              if (e != null && e.hasOnlyType("String_Node_Str"))               throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ t.toString()+ "String_Node_Str"+ e.typeCode());
              if (t == SearchType.uri) {
                if (e != null && !e.typeCode().equals("String_Node_Str"))                 throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ t.toString()+ "String_Node_Str"+ e.typeCode());
              }
 else {
                if (e != null && e.typeCode().equals("String_Node_Str"))                 throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ t.toString()+ "String_Node_Str"+ e.typeCode());
              }
            }
          }
          if (!forProfile && t == SearchType.reference && pn.size() == 0 && !sheet.hasColumn(row,"String_Node_Str"))           throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
          sp=new SearchParameterDefn(n,d,t,pu);
          sp.getPaths().addAll(pn);
          if (!Utilities.noString(sheet.getColumn(row,"String_Node_Str"))) {
            sp.setManualTypes(sheet.getColumn(row,"String_Node_Str").split("String_Node_Str"));
          }
        }
        root2.getSearchParams().put(n,sp);
      }
    }
  }
}

Fixed version (ground truth):
private void readSearchParams(ResourceDefn root2,Sheet sheet,boolean forProfile) throws Exception {
  if (sheet != null) {
    tabfmt.sheet("String_Node_Str");
    tabfmt.column("String_Node_Str");
    tabfmt.column("String_Node_Str");
    tabfmt.column("String_Node_Str");
    tabfmt.column("String_Node_Str");
    tabfmt.column("String_Node_Str");
    tabfmt.column("String_Node_Str");
    for (int row=0; row < sheet.rows.size(); row++) {
      tabfmt.row();
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      tabfmt.cell(sheet.getColumn(row,"String_Node_Str"));
      if (!sheet.hasColumn(row,"String_Node_Str"))       throw new Exception("String_Node_Str" + getLocation(row));
      String n=sheet.getColumn(row,"String_Node_Str");
      if (!n.startsWith("String_Node_Str")) {
        if (!sheet.hasColumn(row,"String_Node_Str"))         throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
        if (n.endsWith("String_Node_Str") || n.endsWith("String_Node_Str"))         throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
        if (root2.getSearchParams().containsKey(n))         throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
        String d=sheet.getColumn(row,"String_Node_Str");
        SearchType t=readSearchType(sheet.getColumn(row,"String_Node_Str"),row);
        SearchParameter.XPathUsageType pu=readSearchXPathUsage(sheet.getColumn(row,"String_Node_Str"),row);
        if (Utilities.noString(sheet.getColumn(row,"String_Node_Str")) && !root2.getName().equals("String_Node_Str"))         throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
        List<String> pn=new ArrayList<String>();
        SearchParameterDefn sp=null;
        if (t == SearchType.composite) {
          String[] pl=sheet.getColumn(row,"String_Node_Str").split("String_Node_Str");
          if (Utilities.noString(d))           throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
          for (          String pi : pl) {
            String p=pi.trim();
            if (!root2.getSearchParams().containsKey(p)) {
              boolean found=false;
              if (p.endsWith("String_Node_Str"))               for (              String pan : root2.getSearchParams().keySet()) {
                if (pan.startsWith(p.substring(0,p.length() - 3)))                 found=true;
              }
              if (!found)               throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ p+ "String_Node_Str"+ getLocation(row));
            }
            pn.add(p);
            sp=new SearchParameterDefn(n,d,t,pu);
            sp.getComposites().addAll(pn);
          }
        }
 else {
          String[] pl=sheet.getColumn(row,"String_Node_Str").split("String_Node_Str");
          for (          String pi : pl) {
            String p=pi.trim();
            ElementDefn e=null;
            if (!Utilities.noString(p) && !p.startsWith("String_Node_Str") && !p.startsWith("String_Node_Str")&& definitions != null) {
              e=root2.getRoot().getElementForPath(trimIndexes(p),definitions,"String_Node_Str",true);
            }
            if (Utilities.noString(d) && e != null)             d=e.getShortDefn();
            if (p.startsWith("String_Node_Str")) {
              String url=extractExtensionUrl(p);
              StructureDefinition ex=extensionDefinitions.get(url);
              if (ex == null)               throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ url+ "String_Node_Str"+ getLocation(row));
              if (Utilities.noString(d))               d=ex.getDescription();
              pn.add(p);
            }
            if (d == null)             throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
            if (e != null)             pn.add(p);
            if (t == SearchType.reference) {
              if (e == null && !forProfile && !sheet.hasColumn(row,"String_Node_Str"))               throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
              if (!forProfile && e != null && (!e.hasType("String_Node_Str")) && (!e.hasType("String_Node_Str")))               throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ e.typeCode());
            }
 else {
              if (e != null && e.hasOnlyType("String_Node_Str"))               throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ t.toString()+ "String_Node_Str"+ e.typeCode());
              if (t == SearchType.uri) {
                if (e != null && !(e.typeCode().equals("String_Node_Str") | e.typeCode().equals("String_Node_Str")))                 throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ t.toString()+ "String_Node_Str"+ e.typeCode());
              }
 else {
                if (e != null && e.typeCode().equals("String_Node_Str"))                 throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ t.toString()+ "String_Node_Str"+ e.typeCode());
              }
            }
          }
          if (!forProfile && t == SearchType.reference && pn.size() == 0 && !sheet.hasColumn(row,"String_Node_Str"))           throw new Exception("String_Node_Str" + root2.getName() + "String_Node_Str"+ n+ "String_Node_Str"+ getLocation(row));
          sp=new SearchParameterDefn(n,d,t,pu);
          sp.getPaths().addAll(pn);
          if (!Utilities.noString(sheet.getColumn(row,"String_Node_Str"))) {
            sp.setManualTypes(sheet.getColumn(row,"String_Node_Str").split("String_Node_Str"));
          }
        }
        root2.getSearchParams().put(n,sp);
      }
    }
  }
}