Program: 15351
Project: 15351
Buggy source:
public static SubredditPostListURL parse(final Uri uri){
  Integer limit=null;
  String before=null, after=null;
  for (  final String parameterKey : General.getUriQueryParameterNames(uri)) {
    if (parameterKey.equalsIgnoreCase("String_Node_Str")) {
      after=uri.getQueryParameter(parameterKey);
    }
 else     if (parameterKey.equalsIgnoreCase("String_Node_Str")) {
      before=uri.getQueryParameter(parameterKey);
    }
 else     if (parameterKey.equalsIgnoreCase("String_Node_Str")) {
      try {
        limit=Integer.parseInt(uri.getQueryParameter(parameterKey));
      }
 catch (      Throwable ignored) {
      }
    }
  }
  final String[] pathSegments;
{
    final List<String> pathSegmentsList=uri.getPathSegments();
    final ArrayList<String> pathSegmentsFiltered=new ArrayList<>(pathSegmentsList.size());
    for (    String segment : pathSegmentsList) {
      while (segment.toLowerCase().endsWith("String_Node_Str") || segment.toLowerCase().endsWith("String_Node_Str")) {
        segment=segment.substring(0,segment.lastIndexOf('.'));
      }
      if (segment.length() > 0) {
        pathSegmentsFiltered.add(segment);
      }
    }
    pathSegments=pathSegmentsFiltered.toArray(new String[pathSegmentsFiltered.size()]);
  }
  final PostListingController.Sort order;
  if (pathSegments.length > 0) {
    order=getOrder(pathSegments[pathSegments.length - 1],uri.getQueryParameter("String_Node_Str"));
  }
 else {
    order=null;
  }
switch (pathSegments.length) {
case 0:
    return new SubredditPostListURL(Type.FRONTPAGE,null,null,limit,before,after);
case 1:
{
    if (order != null) {
      return new SubredditPostListURL(Type.FRONTPAGE,null,order,limit,before,after);
    }
 else {
      return null;
    }
  }
case 2:
case 3:
{
  if (!pathSegments[0].equals("String_Node_Str"))   return null;
  final String subreddit=pathSegments[1];
  if (subreddit.equals("String_Node_Str")) {
    if (pathSegments.length == 2) {
      return new SubredditPostListURL(Type.ALL,null,null,limit,before,after);
    }
 else     if (order != null) {
      return new SubredditPostListURL(Type.ALL,null,order,limit,before,after);
    }
 else {
      return null;
    }
  }
 else   if (subreddit.matches("String_Node_Str")) {
    if (pathSegments.length == 2) {
      return new SubredditPostListURL(Type.ALL_SUBTRACTION,subreddit,null,limit,before,after);
    }
 else     if (order != null) {
      return new SubredditPostListURL(Type.ALL_SUBTRACTION,subreddit,order,limit,before,after);
    }
 else {
      return null;
    }
  }
 else   if (subreddit.matches("String_Node_Str")) {
    if (pathSegments.length == 2) {
      return new SubredditPostListURL(Type.SUBREDDIT_COMBINATION,subreddit,null,limit,before,after);
    }
 else     if (order != null) {
      return new SubredditPostListURL(Type.SUBREDDIT_COMBINATION,subreddit,order,limit,before,after);
    }
 else {
      return null;
    }
  }
 else   if (subreddit.matches("String_Node_Str")) {
    if (pathSegments.length == 2) {
      return new SubredditPostListURL(Type.SUBREDDIT,subreddit,null,limit,before,after);
    }
 else     if (order != null) {
      return new SubredditPostListURL(Type.SUBREDDIT,subreddit,order,limit,before,after);
    }
 else {
      return null;
    }
  }
 else {
    return null;
  }
}
default :
return null;
}
}

Fixed version (ground truth):
public static SubredditPostListURL parse(final Uri uri){
  Integer limit=null;
  String before=null, after=null;
  for (  final String parameterKey : General.getUriQueryParameterNames(uri)) {
    if (parameterKey.equalsIgnoreCase("String_Node_Str")) {
      after=uri.getQueryParameter(parameterKey);
    }
 else     if (parameterKey.equalsIgnoreCase("String_Node_Str")) {
      before=uri.getQueryParameter(parameterKey);
    }
 else     if (parameterKey.equalsIgnoreCase("String_Node_Str")) {
      try {
        limit=Integer.parseInt(uri.getQueryParameter(parameterKey));
      }
 catch (      Throwable ignored) {
      }
    }
  }
  final String[] pathSegments;
{
    final List<String> pathSegmentsList=uri.getPathSegments();
    final ArrayList<String> pathSegmentsFiltered=new ArrayList<>(pathSegmentsList.size());
    for (    String segment : pathSegmentsList) {
      while (General.asciiLowercase(segment).endsWith("String_Node_Str") || General.asciiLowercase(segment).endsWith("String_Node_Str")) {
        segment=segment.substring(0,segment.lastIndexOf('.'));
      }
      if (segment.length() > 0) {
        pathSegmentsFiltered.add(segment);
      }
    }
    pathSegments=pathSegmentsFiltered.toArray(new String[pathSegmentsFiltered.size()]);
  }
  final PostListingController.Sort order;
  if (pathSegments.length > 0) {
    order=getOrder(pathSegments[pathSegments.length - 1],uri.getQueryParameter("String_Node_Str"));
  }
 else {
    order=null;
  }
switch (pathSegments.length) {
case 0:
    return new SubredditPostListURL(Type.FRONTPAGE,null,null,limit,before,after);
case 1:
{
    if (order != null) {
      return new SubredditPostListURL(Type.FRONTPAGE,null,order,limit,before,after);
    }
 else {
      return null;
    }
  }
case 2:
case 3:
{
  if (!pathSegments[0].equals("String_Node_Str"))   return null;
  final String subreddit=pathSegments[1];
  if (subreddit.equals("String_Node_Str")) {
    if (pathSegments.length == 2) {
      return new SubredditPostListURL(Type.ALL,null,null,limit,before,after);
    }
 else     if (order != null) {
      return new SubredditPostListURL(Type.ALL,null,order,limit,before,after);
    }
 else {
      return null;
    }
  }
 else   if (subreddit.matches("String_Node_Str")) {
    if (pathSegments.length == 2) {
      return new SubredditPostListURL(Type.ALL_SUBTRACTION,subreddit,null,limit,before,after);
    }
 else     if (order != null) {
      return new SubredditPostListURL(Type.ALL_SUBTRACTION,subreddit,order,limit,before,after);
    }
 else {
      return null;
    }
  }
 else   if (subreddit.matches("String_Node_Str")) {
    if (pathSegments.length == 2) {
      return new SubredditPostListURL(Type.SUBREDDIT_COMBINATION,subreddit,null,limit,before,after);
    }
 else     if (order != null) {
      return new SubredditPostListURL(Type.SUBREDDIT_COMBINATION,subreddit,order,limit,before,after);
    }
 else {
      return null;
    }
  }
 else   if (subreddit.matches("String_Node_Str")) {
    if (pathSegments.length == 2) {
      return new SubredditPostListURL(Type.SUBREDDIT,subreddit,null,limit,before,after);
    }
 else     if (order != null) {
      return new SubredditPostListURL(Type.SUBREDDIT,subreddit,order,limit,before,after);
    }
 else {
      return null;
    }
  }
 else {
    return null;
  }
}
default :
return null;
}
}