Program: 161204
Project: 161204
Buggy source:
/** 
 * The search interface resembles a standard Whois client query with the extra features of multi-registry client, multiple response styles that can be selected via content negotiation and with an extensible URL parameters schema.
 * @param sources           Mandatory. It's possible to specify multiple sources.
 * @param queryString       Mandatory.
 * @param inverseAttributes If specified the query is an inverse lookup on the given attribute, if not specified the query is a direct lookup search.
 * @param includeTags       Only show RPSL objects with given tags. Can be multiple.
 * @param excludeTags       Only show RPSL objects that <i>do not</i> have given tags. Can be multiple.
 * @param types             If specified the results will be filtered by object-type, multiple type-filters can be specified.
 * @param flags             Optional query-flags. Use separate flags parameters for each option (see examples above)
 * @return Returns the query result.
 */
@GET @Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}) @Path("String_Node_Str") public Response search(@Context HttpServletRequest request,@QueryParam("String_Node_Str") Set<String> sources,@QueryParam("String_Node_Str") String queryString,@QueryParam("String_Node_Str") Set<String> inverseAttributes,@QueryParam("String_Node_Str") Set<String> includeTags,@QueryParam("String_Node_Str") Set<String> excludeTags,@QueryParam("String_Node_Str") Set<String> types,@QueryParam("String_Node_Str") Set<String> flags){
  if (sources == null || sources.isEmpty()) {
    sources=Collections.singleton(sourceContext.getCurrentSource().getName().toString());
  }
 else {
    checkForInvalidSources(sources);
  }
  final Set<String> separateFlags=splitInputFlags(flags);
  checkForInvalidFlags(separateFlags);
  final Query query=Query.parse(String.format("String_Node_Str",QueryFlag.SOURCES.getLongFlag(),JOINER.join(sources),QueryFlag.SHOW_TAG_INFO.getLongFlag(),(types == null || types.isEmpty()) ? "String_Node_Str" : QueryFlag.SELECT_TYPES.getLongFlag(),JOINER.join(types),(inverseAttributes == null || inverseAttributes.isEmpty()) ? "String_Node_Str" : QueryFlag.INVERSE.getLongFlag(),JOINER.join(inverseAttributes),(includeTags == null || includeTags.isEmpty()) ? "String_Node_Str" : QueryFlag.FILTER_TAG_INCLUDE.getLongFlag(),JOINER.join(includeTags),(excludeTags == null || excludeTags.isEmpty()) ? "String_Node_Str" : QueryFlag.FILTER_TAG_EXCLUDE.getLongFlag(),JOINER.join(excludeTags),Joiner.on("String_Node_Str").join(Iterables.transform(separateFlags,new Function<String,String>(){
    @Override public String apply(    String input){
      return input.length() > 1 ? "String_Node_Str" + input : "String_Node_Str" + input;
    }
  }
)),(queryString == null ? "String_Node_Str" : queryString)));
  final Parameters parameters=new Parameters();
  parameters.setSources(sources);
  parameters.setQueryStrings(queryString);
  parameters.setInverseLookup(inverseAttributes);
  parameters.setTypeFilters(types);
  parameters.setFlags(separateFlags);
  Service service=new Service(SERVICE_SEARCH);
  return handleQueryAndStreamResponse(query,request,InetAddresses.forString(request.getRemoteAddr()),parameters,service);
}

Fixed version (ground truth):
/** 
 * The search interface resembles a standard Whois client query with the extra features of multi-registry client, multiple response styles that can be selected via content negotiation and with an extensible URL parameters schema.
 * @param sources           Mandatory. It's possible to specify multiple sources.
 * @param queryString       Mandatory.
 * @param inverseAttributes If specified the query is an inverse lookup on the given attribute, if not specified the query is a direct lookup search.
 * @param includeTags       Only show RPSL objects with given tags. Can be multiple.
 * @param excludeTags       Only show RPSL objects that <i>do not</i> have given tags. Can be multiple.
 * @param types             If specified the results will be filtered by object-type, multiple type-filters can be specified.
 * @param flags             Optional query-flags. Use separate flags parameters for each option (see examples above)
 * @return Returns the query result.
 */
@GET @Produces({MediaType.APPLICATION_XML,MediaType.APPLICATION_JSON}) @Path("String_Node_Str") public Response search(@Context HttpServletRequest request,@QueryParam("String_Node_Str") Set<String> sources,@QueryParam("String_Node_Str") String queryString,@QueryParam("String_Node_Str") Set<String> inverseAttributes,@QueryParam("String_Node_Str") Set<String> includeTags,@QueryParam("String_Node_Str") Set<String> excludeTags,@QueryParam("String_Node_Str") Set<String> types,@QueryParam("String_Node_Str") Set<String> flags){
  Set<String> validSources;
  if (sources == null || sources.isEmpty()) {
    validSources=Collections.singleton(sourceContext.getCurrentSource().getName().toString());
  }
 else {
    validSources=sources;
    checkForInvalidSources(validSources);
  }
  final Set<String> separateFlags=splitInputFlags(flags);
  checkForInvalidFlags(separateFlags);
  final Query query=Query.parse(String.format("String_Node_Str",QueryFlag.SOURCES.getLongFlag(),JOINER.join(validSources),QueryFlag.SHOW_TAG_INFO.getLongFlag(),isNullOrEmpty(types) ? "String_Node_Str" : QueryFlag.SELECT_TYPES.getLongFlag(),JOINER.join(types),isNullOrEmpty(inverseAttributes) ? "String_Node_Str" : QueryFlag.INVERSE.getLongFlag(),JOINER.join(inverseAttributes),isNullOrEmpty(includeTags) ? "String_Node_Str" : QueryFlag.FILTER_TAG_INCLUDE.getLongFlag(),JOINER.join(includeTags),isNullOrEmpty(excludeTags) ? "String_Node_Str" : QueryFlag.FILTER_TAG_EXCLUDE.getLongFlag(),JOINER.join(excludeTags),Joiner.on("String_Node_Str").join(Iterables.transform(separateFlags,new Function<String,String>(){
    @Override public String apply(    String input){
      return input.length() > 1 ? "String_Node_Str" + input : "String_Node_Str" + input;
    }
  }
)),(queryString == null ? "String_Node_Str" : queryString)));
  final Parameters parameters=new Parameters();
  parameters.setSources(validSources);
  parameters.setQueryStrings(queryString);
  parameters.setInverseLookup(inverseAttributes);
  parameters.setTypeFilters(types);
  parameters.setFlags(separateFlags);
  Service service=new Service(SERVICE_SEARCH);
  return handleQueryAndStreamResponse(query,request,InetAddresses.forString(request.getRemoteAddr()),parameters,service);
}