Program: 59630
Project: 59630
Buggy source:
private DynamicEntitiesResponse enumJpaEntities(final Context context,final String navProp){
  String alias="String_Node_Str";
  String from=context.jpaEntityType.getName() + "String_Node_Str" + alias;
  String where=null;
  Object edmObj=null;
  if (navProp != null) {
    where=String.format("String_Node_Str",alias,context.keyPropertyName,context.typeSafeEntityKey);
    String prop=null;
    int propCount=0;
    for (    String pn : navProp.split("String_Node_Str")) {
      String[] propSplit=pn.split("String_Node_Str");
      prop=propSplit[0];
      propCount++;
      if (edmObj instanceof EdmProperty) {
        throw new UnsupportedOperationException(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str",alias));
      }
      edmObj=metadata.findEdmProperty(prop);
      if (edmObj instanceof EdmNavigationProperty) {
        EdmNavigationProperty propInfo=(EdmNavigationProperty)edmObj;
        context.jpaEntityType=findJPAEntityType(context.em,propInfo.toRole.type.name);
        context.ees=metadata.findEdmEntitySet(JPAEdmGenerator.getEntitySetName(context.jpaEntityType));
        prop=alias + "String_Node_Str" + prop;
        alias="String_Node_Str" + Integer.toString(propCount);
        from=String.format("String_Node_Str",from,prop,alias);
        if (propSplit.length > 1) {
          Object entityKey=OptionsQueryParser.parseIdObject("String_Node_Str" + propSplit[1]);
          context.keyPropertyName=JPAEdmGenerator.getId(context.jpaEntityType).getName();
          context.typeSafeEntityKey=typeSafeEntityKey(em,context.jpaEntityType,entityKey);
          where=String.format("String_Node_Str",alias,context.keyPropertyName,context.typeSafeEntityKey);
        }
      }
 else       if (edmObj instanceof EdmProperty) {
        EdmProperty propInfo=(EdmProperty)edmObj;
        alias=alias + "String_Node_Str" + propInfo.name;
        context.ees=null;
      }
      if (edmObj == null) {
        throw new EntityNotFoundException(String.format("String_Node_Str",pn));
      }
    }
  }
  String jpql=String.format("String_Node_Str",alias,from);
  JPQLGenerator jpqlGen=new JPQLGenerator(context.keyPropertyName,alias);
  if (context.query.filter != null) {
    String filterPredicate=jpqlGen.toJpql(context.query.filter);
    where=addWhereExpression(where,filterPredicate,"String_Node_Str");
  }
  if (context.query.skipToken != null) {
    String skipPredicate=jpqlGen.toJpql(parseSkipToken(jpqlGen,context.query.orderBy,context.query.skipToken));
    where=addWhereExpression(where,skipPredicate,"String_Node_Str");
  }
  if (where != null) {
    jpql=String.format("String_Node_Str",jpql,where);
  }
  if (context.query.orderBy != null) {
    String orders="String_Node_Str";
    for (    OrderByExpression orderBy : context.query.orderBy) {
      String field=jpqlGen.toJpql(orderBy.getExpression());
      if (orderBy.isAscending()) {
        orders=orders + field + "String_Node_Str";
      }
 else {
        orders=String.format("String_Node_Str",orders,field);
      }
    }
    jpql=jpql + "String_Node_Str" + orders.substring(0,orders.length() - 1);
  }
  Query tq=em.createQuery(jpql);
  Integer inlineCount=context.query.inlineCount == InlineCount.ALLPAGES ? tq.getResultList().size() : null;
  int queryMaxResult=maxResults;
  if (context.query.top != null) {
    if (context.query.top.equals(0)) {
      return DynamicEntitiesResponse.entities(null,inlineCount,null);
    }
    if (context.query.top < maxResults) {
      queryMaxResult=context.query.top;
    }
  }
  tq=tq.setMaxResults(queryMaxResult + 1);
  if (context.query.skip != null) {
    tq=tq.setFirstResult(context.query.skip);
  }
  @SuppressWarnings("String_Node_Str") List<Object> results=tq.getResultList();
  List<OEntity> entities=new LinkedList<OEntity>();
  if (edmObj instanceof EdmProperty) {
    EdmProperty propInfo=(EdmProperty)edmObj;
    if (results.size() != 1)     throw new RuntimeException("String_Node_Str" + results.size());
    Object value=results.get(0);
    OProperty<?> op=OProperties.simple(((EdmProperty)propInfo).name,((EdmProperty)propInfo).type,value);
    return DynamicEntitiesResponse.property(op);
  }
 else {
    entities=Enumerable.create(results).take(queryMaxResult).select(new Func1<Object,OEntity>(){
      public OEntity apply(      final Object input){
        return makeEntity(context,input);
      }
    }
).toList();
  }
  boolean useSkipToken=context.query.top != null ? context.query.top > maxResults && results.size() > queryMaxResult : results.size() > queryMaxResult;
  String skipToken=null;
  if (useSkipToken) {
    OEntity last=Enumerable.create(entities).last();
    skipToken=createSkipToken(context,last);
  }
  return DynamicEntitiesResponse.entities(entities,inlineCount,skipToken);
}

Fixed version (ground truth):
private DynamicEntitiesResponse enumJpaEntities(final Context context,final String navProp){
  String alias="String_Node_Str";
  String from=context.jpaEntityType.getName() + "String_Node_Str" + alias;
  String where=null;
  Object edmObj=null;
  if (navProp != null) {
    where=String.format("String_Node_Str",alias,context.keyPropertyName,context.typeSafeEntityKey);
    String prop=null;
    int propCount=0;
    for (    String pn : navProp.split("String_Node_Str")) {
      String[] propSplit=pn.split("String_Node_Str");
      prop=propSplit[0];
      propCount++;
      if (edmObj instanceof EdmProperty) {
        throw new UnsupportedOperationException(String.format("String_Node_Str" + "String_Node_Str" + "String_Node_Str"+ "String_Node_Str",alias));
      }
      edmObj=metadata.findEdmProperty(prop);
      if (edmObj instanceof EdmNavigationProperty) {
        EdmNavigationProperty propInfo=(EdmNavigationProperty)edmObj;
        context.jpaEntityType=findJPAEntityType(context.em,propInfo.toRole.type.name);
        context.ees=metadata.findEdmEntitySet(JPAEdmGenerator.getEntitySetName(context.jpaEntityType));
        prop=alias + "String_Node_Str" + prop;
        alias="String_Node_Str" + Integer.toString(propCount);
        from=String.format("String_Node_Str",from,prop,alias);
        if (propSplit.length > 1) {
          Object entityKey=OptionsQueryParser.parseIdObject("String_Node_Str" + propSplit[1]);
          context.keyPropertyName=JPAEdmGenerator.getId(context.jpaEntityType).getName();
          context.typeSafeEntityKey=typeSafeEntityKey(em,context.jpaEntityType,entityKey);
          where=String.format("String_Node_Str",alias,context.keyPropertyName,context.typeSafeEntityKey);
        }
      }
 else       if (edmObj instanceof EdmProperty) {
        EdmProperty propInfo=(EdmProperty)edmObj;
        alias=alias + "String_Node_Str" + propInfo.name;
        context.ees=null;
      }
      if (edmObj == null) {
        throw new EntityNotFoundException(String.format("String_Node_Str",pn));
      }
    }
  }
  String jpql=String.format("String_Node_Str",alias,from);
  JPQLGenerator jpqlGen=new JPQLGenerator(context.keyPropertyName,alias);
  if (context.query.filter != null) {
    String filterPredicate=jpqlGen.toJpql(context.query.filter);
    where=addWhereExpression(where,filterPredicate,"String_Node_Str");
  }
  if (context.query.skipToken != null) {
    String skipPredicate=jpqlGen.toJpql(parseSkipToken(jpqlGen,context.query.orderBy,context.query.skipToken));
    where=addWhereExpression(where,skipPredicate,"String_Node_Str");
  }
  if (where != null) {
    jpql=String.format("String_Node_Str",jpql,where);
  }
  if (context.query.orderBy != null) {
    String orders="String_Node_Str";
    for (    OrderByExpression orderBy : context.query.orderBy) {
      String field=jpqlGen.toJpql(orderBy.getExpression());
      if (orderBy.isAscending()) {
        orders=orders + field + "String_Node_Str";
      }
 else {
        orders=String.format("String_Node_Str",orders,field);
      }
    }
    jpql=jpql + "String_Node_Str" + orders.substring(0,orders.length() - 1);
  }
  Query tq=context.em.createQuery(jpql);
  Integer inlineCount=context.query.inlineCount == InlineCount.ALLPAGES ? tq.getResultList().size() : null;
  int queryMaxResult=maxResults;
  if (context.query.top != null) {
    if (context.query.top.equals(0)) {
      return DynamicEntitiesResponse.entities(null,inlineCount,null);
    }
    if (context.query.top < maxResults) {
      queryMaxResult=context.query.top;
    }
  }
  tq=tq.setMaxResults(queryMaxResult + 1);
  if (context.query.skip != null) {
    tq=tq.setFirstResult(context.query.skip);
  }
  @SuppressWarnings("String_Node_Str") List<Object> results=tq.getResultList();
  List<OEntity> entities=new LinkedList<OEntity>();
  if (edmObj instanceof EdmProperty) {
    EdmProperty propInfo=(EdmProperty)edmObj;
    if (results.size() != 1)     throw new RuntimeException("String_Node_Str" + results.size());
    Object value=results.get(0);
    OProperty<?> op=OProperties.simple(((EdmProperty)propInfo).name,((EdmProperty)propInfo).type,value);
    return DynamicEntitiesResponse.property(op);
  }
 else {
    entities=Enumerable.create(results).take(queryMaxResult).select(new Func1<Object,OEntity>(){
      public OEntity apply(      final Object input){
        return makeEntity(context,input);
      }
    }
).toList();
  }
  boolean useSkipToken=context.query.top != null ? context.query.top > maxResults && results.size() > queryMaxResult : results.size() > queryMaxResult;
  String skipToken=null;
  if (useSkipToken) {
    OEntity last=Enumerable.create(entities).last();
    skipToken=createSkipToken(context,last);
  }
  return DynamicEntitiesResponse.entities(entities,inlineCount,skipToken);
}