class SalesforceUpsert extends SalesforceStep {

  void setFieldInSObject( SObject sobjPass, XmlObject element ) {
    Iterator<XmlObject> children = element.getChildren();
    String name = element.getName().getLocalPart();
    if ( !children.hasNext() ) {
      sobjPass.setSObjectField( name, element.getValue() );
    } else {
      SObject child = new SObject();
      child.setName( new QName( name ) );
      while ( children.hasNext() ) {
        setFieldInSObject( child, children.next() );
      }
      sobjPass.setSObjectField( name, child );
    }
  }

  public  SalesforceUpsert( StepMeta stepMeta, StepDataInterface stepDataInterface, int copyNr,
    TransMeta transMeta, Trans trans );

}