public ModifyDBInstanceRequest unmarshall(Node node) throws Exception {
    if (node == null) return null;

    ModifyDBInstanceRequest modifyDBInstanceRequest = new ModifyDBInstanceRequest();

    Node dBInstanceIdentifierNode = XpathUtils.asNode("DBInstanceIdentifier", node);
    modifyDBInstanceRequest.setDBInstanceIdentifier(
        new StringUnmarshaller().unmarshall(dBInstanceIdentifierNode));

    Node allocatedStorageNode = XpathUtils.asNode("AllocatedStorage", node);
    modifyDBInstanceRequest.setAllocatedStorage(
        new IntegerUnmarshaller().unmarshall(allocatedStorageNode));

    Node dBInstanceClassNode = XpathUtils.asNode("DBInstanceClass", node);
    modifyDBInstanceRequest.setDBInstanceClass(
        new StringUnmarshaller().unmarshall(dBInstanceClassNode));

    NodeList dBSecurityGroupsNodes =
        XpathUtils.asNodeList("DBSecurityGroups/DBSecurityGroupName", node);
    for (int dBSecurityGroupsIndex = 0;
        dBSecurityGroupsIndex < XpathUtils.nodeLength(dBSecurityGroupsNodes);
        ++dBSecurityGroupsIndex) {
      Node dBSecurityGroupsNode = dBSecurityGroupsNodes.item(dBSecurityGroupsIndex);
      modifyDBInstanceRequest
          .getDBSecurityGroups()
          .add(new StringUnmarshaller().unmarshall(dBSecurityGroupsNode));
      dBSecurityGroupsNode.getParentNode().removeChild(dBSecurityGroupsNode);
    }

    Node applyImmediatelyNode = XpathUtils.asNode("ApplyImmediately", node);
    modifyDBInstanceRequest.setApplyImmediately(
        new BooleanUnmarshaller().unmarshall(applyImmediatelyNode));

    Node masterUserPasswordNode = XpathUtils.asNode("MasterUserPassword", node);
    modifyDBInstanceRequest.setMasterUserPassword(
        new StringUnmarshaller().unmarshall(masterUserPasswordNode));

    Node dBParameterGroupNameNode = XpathUtils.asNode("DBParameterGroupName", node);
    modifyDBInstanceRequest.setDBParameterGroupName(
        new StringUnmarshaller().unmarshall(dBParameterGroupNameNode));

    Node backupRetentionPeriodNode = XpathUtils.asNode("BackupRetentionPeriod", node);
    modifyDBInstanceRequest.setBackupRetentionPeriod(
        new IntegerUnmarshaller().unmarshall(backupRetentionPeriodNode));

    Node preferredBackupWindowNode = XpathUtils.asNode("PreferredBackupWindow", node);
    modifyDBInstanceRequest.setPreferredBackupWindow(
        new StringUnmarshaller().unmarshall(preferredBackupWindowNode));

    Node preferredMaintenanceWindowNode = XpathUtils.asNode("PreferredMaintenanceWindow", node);
    modifyDBInstanceRequest.setPreferredMaintenanceWindow(
        new StringUnmarshaller().unmarshall(preferredMaintenanceWindowNode));

    return modifyDBInstanceRequest;
  }