Program: 86821
Project: 86821
Buggy source:
protected void populateModel(HttpServletRequest request,Map<String,Object> model){
  super.populateModel(request,model);
  String uuid=(String)model.get("String_Node_Str");
  String property=(String)model.get("String_Node_Str");
  String currentKey=(String)model.get("String_Node_Str");
  String mappedUuid=(String)model.get("String_Node_Str");
  Class<?> typeClass=(Class<?>)model.get("String_Node_Str");
  Parameterizable obj=(Parameterizable)model.get("String_Node_Str");
  Field f=ReflectionUtil.getField(typeClass,property);
  if (f != null) {
    Class<?> fieldType=ReflectionUtil.getFieldType(f);
    if (List.class.isAssignableFrom(fieldType)) {
      model.put("String_Node_Str","String_Node_Str");
    }
 else     if (Map.class.isAssignableFrom(fieldType)) {
      model.put("String_Node_Str","String_Node_Str");
    }
  }
  Class<? extends Parameterizable> mappedType=null;
  if (StringUtils.isNotEmpty(property)) {
    mappedType=ParameterizableUtil.getMappedType(typeClass,property);
  }
  model.put("String_Node_Str",mappedType);
  if (StringUtils.isNotEmpty(uuid)) {
    Parameterizable mappedObj=null;
    Map<String,Object> mappings=new HashMap<String,Object>();
    if (StringUtils.isEmpty(mappedUuid)) {
      Mapped<Parameterizable> mapped=ParameterizableUtil.getMappedProperty(obj,property,currentKey);
      if (mapped != null) {
        model.put("String_Node_Str",mapped);
        mappedObj=mapped.getParameterizable();
        mappings=mapped.getParameterMappings();
      }
    }
 else     if (mappedUuid != null) {
      mappedObj=ParameterizableUtil.getParameterizable(mappedUuid,mappedType);
    }
    model.put("String_Node_Str",mappedObj);
    model.put("String_Node_Str",mappings);
    Map<String,String> mappedParams=new HashMap<String,String>();
    Map<String,String> complexParams=new HashMap<String,String>();
    Map<String,String> fixedParams=new HashMap<String,String>();
    Map<String,Map<String,String>> allowedParams=new HashMap<String,Map<String,String>>();
    if (mappedObj != null) {
      for (      Parameter p : mappedObj.getParameters()) {
        Object mappedObjVal=mappings.get(p.getName());
        Map<String,String> allowed=new HashMap<String,String>();
        for (        Parameter parentParam : obj.getParameters()) {
          if (p.getType() == parentParam.getType()) {
            allowed.put(parentParam.getName(),parentParam.getLabelOrName());
          }
        }
        allowedParams.put(p.getName(),allowed);
        if (mappedObjVal != null && mappedObjVal instanceof String) {
          String mappedVal=(String)mappedObjVal;
          if (EvaluationUtil.isExpression(mappedVal)) {
            mappedVal=EvaluationUtil.stripExpression(mappedVal);
            if (obj.getParameter(mappedVal) != null) {
              mappedParams.put(p.getName(),mappedVal);
            }
 else {
              complexParams.put(p.getName(),mappedVal);
            }
          }
 else {
            fixedParams.put(p.getName(),mappedVal);
          }
        }
      }
    }
    model.put("String_Node_Str",allowedParams);
    model.put("String_Node_Str",mappedParams);
    model.put("String_Node_Str",complexParams);
    model.put("String_Node_Str",fixedParams);
  }
}

Fixed version (ground truth):
protected void populateModel(HttpServletRequest request,Map<String,Object> model){
  super.populateModel(request,model);
  String uuid=(String)model.get("String_Node_Str");
  String property=(String)model.get("String_Node_Str");
  String currentKey=(String)model.get("String_Node_Str");
  String mappedUuid=(String)model.get("String_Node_Str");
  Class<?> typeClass=(Class<?>)model.get("String_Node_Str");
  Parameterizable obj=(Parameterizable)model.get("String_Node_Str");
  Field f=ReflectionUtil.getField(typeClass,property);
  if (f != null) {
    Class<?> fieldType=ReflectionUtil.getFieldType(f);
    if (List.class.isAssignableFrom(fieldType)) {
      model.put("String_Node_Str","String_Node_Str");
    }
 else     if (Map.class.isAssignableFrom(fieldType)) {
      model.put("String_Node_Str","String_Node_Str");
    }
  }
  Class<? extends Parameterizable> mappedType=null;
  if (StringUtils.isNotEmpty(property)) {
    mappedType=ParameterizableUtil.getMappedType(typeClass,property);
  }
  model.put("String_Node_Str",mappedType);
  if (StringUtils.isNotEmpty(uuid)) {
    Parameterizable mappedObj=null;
    Map<String,Object> mappings=new HashMap<String,Object>();
    if (StringUtils.isEmpty(mappedUuid)) {
      Mapped<Parameterizable> mapped=ParameterizableUtil.getMappedProperty(obj,property,currentKey);
      if (mapped != null) {
        model.put("String_Node_Str",mapped);
        mappedObj=mapped.getParameterizable();
        mappings=mapped.getParameterMappings();
      }
    }
 else     if (mappedUuid != null) {
      mappedObj=ParameterizableUtil.getParameterizable(mappedUuid,mappedType);
    }
    model.put("String_Node_Str",mappedObj);
    model.put("String_Node_Str",mappings);
    Map<String,String> mappedParams=new HashMap<String,String>();
    Map<String,String> complexParams=new HashMap<String,String>();
    Map<String,Object> fixedParams=new HashMap<String,Object>();
    Map<String,Map<String,String>> allowedParams=new HashMap<String,Map<String,String>>();
    if (mappedObj != null) {
      for (      Parameter p : mappedObj.getParameters()) {
        Object mappedObjVal=mappings.get(p.getName());
        Map<String,String> allowed=new HashMap<String,String>();
        for (        Parameter parentParam : obj.getParameters()) {
          if (p.getType() == parentParam.getType()) {
            allowed.put(parentParam.getName(),parentParam.getLabelOrName());
          }
        }
        allowedParams.put(p.getName(),allowed);
        if (mappedObjVal != null && mappedObjVal instanceof String) {
          String mappedVal=(String)mappedObjVal;
          if (EvaluationUtil.isExpression(mappedVal)) {
            mappedVal=EvaluationUtil.stripExpression(mappedVal);
            if (obj.getParameter(mappedVal) != null) {
              mappedParams.put(p.getName(),mappedVal);
            }
 else {
              complexParams.put(p.getName(),mappedVal);
            }
          }
        }
 else {
          fixedParams.put(p.getName(),mappedObjVal);
        }
      }
    }
    model.put("String_Node_Str",allowedParams);
    model.put("String_Node_Str",mappedParams);
    model.put("String_Node_Str",complexParams);
    model.put("String_Node_Str",fixedParams);
  }
}