private List<IOParameter> convertToIOParameters(String propertyName, JsonNode elementNode) {
    List<IOParameter> ioParameters = new ArrayList<IOParameter>();
    JsonNode parametersNode = getProperty(propertyName, elementNode);
    if (parametersNode != null) {
      JsonNode itemsArrayNode = parametersNode.get(EDITOR_PROPERTIES_GENERAL_ITEMS);
      if (itemsArrayNode != null) {
        for (JsonNode itemNode : itemsArrayNode) {
          JsonNode sourceNode = itemNode.get(PROPERTY_IOPARAMETER_SOURCE);
          JsonNode sourceExpressionNode = itemNode.get(PROPERTY_IOPARAMETER_SOURCE_EXPRESSION);
          if ((sourceNode != null && StringUtils.isNotEmpty(sourceNode.asText()))
              || (sourceExpressionNode != null
                  && StringUtils.isNotEmpty(sourceExpressionNode.asText()))) {

            IOParameter parameter = new IOParameter();
            if (StringUtils.isNotEmpty(getValueAsString(PROPERTY_IOPARAMETER_SOURCE, itemNode))) {
              parameter.setSource(getValueAsString(PROPERTY_IOPARAMETER_SOURCE, itemNode));
            }
            if (StringUtils.isNotEmpty(
                getValueAsString(PROPERTY_IOPARAMETER_SOURCE_EXPRESSION, itemNode))) {
              parameter.setSourceExpression(
                  getValueAsString(PROPERTY_IOPARAMETER_SOURCE_EXPRESSION, itemNode));
            }
            if (StringUtils.isNotEmpty(getValueAsString(PROPERTY_IOPARAMETER_TARGET, itemNode))) {
              parameter.setTarget(getValueAsString(PROPERTY_IOPARAMETER_TARGET, itemNode));
            }
            ioParameters.add(parameter);
          }
        }
      }
    }
    return ioParameters;
  }