public static void printArgumentConstraint(OutputStream sql, Stella_Object argument, RelationColumnInfo column) {
    { NamedDescription columntype = column.columnType;
      Surrogate argname = Logic.objectSurrogate(argument);
      Module argmodule = ((argname != null) ? ((Module)(argname.homeContext)) : ((Module)(null)));
      RelationColumnInfo modulerefcolumn = column.moduleReferenceColumn;
      boolean casesensitiveP = ((argmodule != null) &&
          argmodule.caseSensitiveP) ||
          Stella_Object.isaP(argument, RDBMS.SGT_STELLA_STRING_WRAPPER);

      if (RDBMS.collectionValuedConstraintP(argument)) {
        sql.nativeStream.print("(");
        { Stella_Object subarg = null;
          Cons iter000 = RDBMS.collectionValuedConstraintElements(argument);
          int si = Stella.NULL_INTEGER;
          int iter001 = 1;

          for (;!(iter000 == Stella.NIL); iter000 = iter000.rest, iter001 = iter001 + 1) {
            subarg = iter000.value;
            si = iter001;
            if (si > 1) {
              sql.nativeStream.print(" OR ");
            }
            RDBMS.printColumnConstraint(sql, column, RDBMS.coercePowerloomObjectToString(subarg, columntype), casesensitiveP);
          }
        }
        sql.nativeStream.print(")");
      }
      else {
        RDBMS.printColumnConstraint(sql, column, RDBMS.coercePowerloomObjectToString(argument, columntype), casesensitiveP);
      }
      if ((modulerefcolumn != null) &&
          (argmodule != null)) {
        sql.nativeStream.print(" AND ");
        RDBMS.printColumnConstraint(sql, modulerefcolumn, argmodule.moduleName, false);
      }
    }
  }