Program: 117906
Project: 117906
Buggy source:
@Override public List<NodeReturn> createReturns(){
  List<NodeReturn> listReturn=new ArrayList<>();
  ComponentProperties componentProperties=ComponentsUtils.getComponentProperties(getName());
  if (!(componentProperties instanceof ComponentPropertiesImpl)) {
    return listReturn;
  }
  NodeReturn nodeRet=new NodeReturn();
  nodeRet.setType(JavaTypesManager.STRING.getLabel());
  nodeRet.setDisplayName(ComponentReturnVariableUtils.getTranslationForVariable(ComponentDefinition.RETURN_ERROR_MESSAGE,ComponentDefinition.RETURN_ERROR_MESSAGE));
  nodeRet.setName(ComponentReturnVariableUtils.getStudioNameFromVariable(ComponentDefinition.RETURN_ERROR_MESSAGE));
  nodeRet.setAvailability("String_Node_Str");
  listReturn.add(nodeRet);
  for (  Property<?> child : componentDefinition.getReturnProperties()) {
    nodeRet=new NodeReturn();
    nodeRet.setType(ComponentsUtils.getTalendTypeFromProperty(child).getId());
    nodeRet.setDisplayName(ComponentReturnVariableUtils.getTranslationForVariable(child.getName(),child.getDisplayName()));
    nodeRet.setName(ComponentReturnVariableUtils.getStudioNameFromVariable(child.getName()));
    if (nodeRet.getName().equals(ERROR_MESSAGE)) {
      continue;
    }
    Object object=child.getTaggedValue(IGenericConstants.AVAILABILITY);
    if (object != null) {
      nodeRet.setAvailability(object.toString());
    }
 else {
      nodeRet.setAvailability("String_Node_Str");
    }
    listReturn.add(nodeRet);
  }
  return listReturn;
}

Fixed version (ground truth):
@Override public List<NodeReturn> createReturns(INode parentNode){
  List<NodeReturn> listReturn=new ArrayList<>();
  ComponentProperties componentProperties=parentNode.getComponentProperties();
  if (componentProperties == null) {
    parentNode.setComponentProperties(ComponentsUtils.getComponentProperties(getName()));
    componentProperties=parentNode.getComponentProperties();
  }
  if (!(componentProperties instanceof ComponentPropertiesImpl)) {
    return listReturn;
  }
  NodeReturn nodeRet=new NodeReturn();
  nodeRet.setType(JavaTypesManager.STRING.getLabel());
  nodeRet.setDisplayName(ComponentReturnVariableUtils.getTranslationForVariable(ComponentDefinition.RETURN_ERROR_MESSAGE,ComponentDefinition.RETURN_ERROR_MESSAGE));
  nodeRet.setName(ComponentReturnVariableUtils.getStudioNameFromVariable(ComponentDefinition.RETURN_ERROR_MESSAGE));
  nodeRet.setAvailability("String_Node_Str");
  listReturn.add(nodeRet);
  for (  Property<?> child : componentDefinition.getReturnProperties()) {
    nodeRet=new NodeReturn();
    nodeRet.setType(ComponentsUtils.getTalendTypeFromProperty(child).getId());
    nodeRet.setDisplayName(ComponentReturnVariableUtils.getTranslationForVariable(child.getName(),child.getDisplayName()));
    nodeRet.setName(ComponentReturnVariableUtils.getStudioNameFromVariable(child.getName()));
    if (nodeRet.getName().equals(ERROR_MESSAGE)) {
      continue;
    }
    Object object=child.getTaggedValue(IGenericConstants.AVAILABILITY);
    if (object != null) {
      nodeRet.setAvailability(object.toString());
    }
 else {
      nodeRet.setAvailability("String_Node_Str");
    }
    listReturn.add(nodeRet);
  }
  return listReturn;
}