All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.google.ortools.constraintsolver.Solver Maven / Gradle / Ivy

The newest version!
/* ----------------------------------------------------------------------------
 * This file was automatically generated by SWIG (http://www.swig.org).
 * Version 3.0.10
 *
 * Do not make changes to this file unless you know what you are doing--modify
 * the SWIG interface file instead.
 * ----------------------------------------------------------------------------- */

package com.google.ortools.constraintsolver;

import com.google.ortools.constraintsolver.ConstraintSolverParameters;
import com.google.ortools.constraintsolver.SearchLimitParameters;

public class Solver {
  private transient long swigCPtr;
  protected transient boolean swigCMemOwn;

  protected Solver(long cPtr, boolean cMemoryOwn) {
    swigCMemOwn = cMemoryOwn;
    swigCPtr = cPtr;
  }

  protected static long getCPtr(Solver obj) {
    return (obj == null) ? 0 : obj.swigCPtr;
  }

  protected void finalize() {
    delete();
  }

  public synchronized void delete() {
    if (swigCPtr != 0) {
      if (swigCMemOwn) {
        swigCMemOwn = false;
        operations_research_constraint_solverJNI.delete_Solver(swigCPtr);
      }
      swigCPtr = 0;
    }
  }

  /**
   * This exceptions signal that a failure has been raised in the C++ world.
   *
   */
  public static class FailException extends Exception {
    public FailException() {
      super();
    }

    public FailException(String message) {
      super(message);
    }
  }

  public IntVar[] makeIntVarArray(int count, long min, long max) {
    IntVar[] array = new IntVar[count];
    for (int i = 0; i < count; ++i) {
      array[i] = makeIntVar(min, max);
    }
    return array;
  }

  public IntVar[] makeIntVarArray(int count, long min, long max, String name) {
    IntVar[] array = new IntVar[count];
    for (int i = 0; i < count; ++i) {
      String var_name = name + i;
      array[i] = makeIntVar(min, max, var_name);
    }
    return array;
  }

  public IntVar[] makeBoolVarArray(int count) {
    IntVar[] array = new IntVar[count];
    for (int i = 0; i < count; ++i) {
      array[i] = makeBoolVar();
    }
    return array;
  }

  public IntVar[] makeBoolVarArray(int count, String name) {
    IntVar[] array = new IntVar[count];
    for (int i = 0; i < count; ++i) {
      String var_name = name + i;
      array[i] = makeBoolVar(var_name);
    }
    return array;
  }

  public IntervalVar[] makeFixedDurationIntervalVarArray(int count,
                                                         long start_min,
                                                         long start_max,
                                                         long duration,
                                                         boolean optional) {
    IntervalVar[] array = new IntervalVar[count];
    for (int i = 0; i < count; ++i) {
      array[i] = makeFixedDurationIntervalVar(start_min,
                                              start_max,
                                              duration,
                                              optional,
                                              "");
    }
    return array;
  }

  public IntervalVar[] makeFixedDurationIntervalVarArray(int count,
                                                         long start_min,
                                                         long start_max,
                                                         long duration,
                                                         boolean optional,
                                                         String name) {
    IntervalVar[] array = new IntervalVar[count];
    for (int i = 0; i < count; ++i) {
      array[i] = makeFixedDurationIntervalVar(start_min,
                                              start_max,
                                              duration,
                                              optional,
                                              name + i);
    }
    return array;
  }


  static public class IntegerCastInfo {
    private transient long swigCPtr;
    protected transient boolean swigCMemOwn;
  
    protected IntegerCastInfo(long cPtr, boolean cMemoryOwn) {
      swigCMemOwn = cMemoryOwn;
      swigCPtr = cPtr;
    }
  
    protected static long getCPtr(IntegerCastInfo obj) {
      return (obj == null) ? 0 : obj.swigCPtr;
    }
  
    protected void finalize() {
      delete();
    }
  
    public synchronized void delete() {
      if (swigCPtr != 0) {
        if (swigCMemOwn) {
          swigCMemOwn = false;
          operations_research_constraint_solverJNI.delete_Solver_IntegerCastInfo(swigCPtr);
        }
        swigCPtr = 0;
      }
    }
  
    public IntegerCastInfo() {
      this(operations_research_constraint_solverJNI.new_Solver_IntegerCastInfo__SWIG_0(), true);
    }
  
    public IntegerCastInfo(IntVar v, IntExpr e, Constraint c) {
      this(operations_research_constraint_solverJNI.new_Solver_IntegerCastInfo__SWIG_1(IntVar.getCPtr(v), v, IntExpr.getCPtr(e), e, Constraint.getCPtr(c), c), true);
    }
  
    public void setVariable(IntVar value) {
      operations_research_constraint_solverJNI.Solver_IntegerCastInfo_variable_set(swigCPtr, this, IntVar.getCPtr(value), value);
    }
  
    public IntVar getVariable() {
      long cPtr = operations_research_constraint_solverJNI.Solver_IntegerCastInfo_variable_get(swigCPtr, this);
      return (cPtr == 0) ? null : new IntVar(cPtr, false);
    }
  
    public void setExpression(IntExpr value) {
      operations_research_constraint_solverJNI.Solver_IntegerCastInfo_expression_set(swigCPtr, this, IntExpr.getCPtr(value), value);
    }
  
    public IntExpr getExpression() {
      long cPtr = operations_research_constraint_solverJNI.Solver_IntegerCastInfo_expression_get(swigCPtr, this);
      return (cPtr == 0) ? null : new IntExpr(cPtr, false);
    }
  
    public void setMaintainer(Constraint value) {
      operations_research_constraint_solverJNI.Solver_IntegerCastInfo_maintainer_set(swigCPtr, this, Constraint.getCPtr(value), value);
    }
  
    public Constraint getMaintainer() {
      long cPtr = operations_research_constraint_solverJNI.Solver_IntegerCastInfo_maintainer_get(swigCPtr, this);
      return (cPtr == 0) ? null : new Constraint(cPtr, false);
    }
  
  }

  public Solver(String name) {
    this(operations_research_constraint_solverJNI.new_Solver__SWIG_0(name), true);
  }

  public Solver(String name, com.google.ortools.constraintsolver.ConstraintSolverParameters parameters) {
    this(operations_research_constraint_solverJNI.new_Solver__SWIG_1(name, parameters.toByteArray()), true);
  }

  public com.google.ortools.constraintsolver.ConstraintSolverParameters parameters() {
  byte[] buf = operations_research_constraint_solverJNI.Solver_parameters(swigCPtr, this);
  if (buf == null || buf.length == 0) {
    return null;
  }
  try {
    return com.google.ortools.constraintsolver.ConstraintSolverParameters.parseFrom(buf);
  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    throw new RuntimeException(
        "Unable to parse com.google.ortools.constraintsolver.ConstraintSolverParameters protocol message.");
  }
}

  public static com.google.ortools.constraintsolver.ConstraintSolverParameters defaultSolverParameters() {
  byte[] buf = operations_research_constraint_solverJNI.Solver_defaultSolverParameters();
  if (buf == null || buf.length == 0) {
    return null;
  }
  try {
    return com.google.ortools.constraintsolver.ConstraintSolverParameters.parseFrom(buf);
  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    throw new RuntimeException(
        "Unable to parse com.google.ortools.constraintsolver.ConstraintSolverParameters protocol message.");
  }
}

  public void addConstraint(Constraint c) {
    operations_research_constraint_solverJNI.Solver_addConstraint(swigCPtr, this, Constraint.getCPtr(c), c);
  }

  public void AddCastConstraint(CastConstraint constraint, IntVar target_var, IntExpr expr) {
    operations_research_constraint_solverJNI.Solver_AddCastConstraint(swigCPtr, this, CastConstraint.getCPtr(constraint), constraint, IntVar.getCPtr(target_var), target_var, IntExpr.getCPtr(expr), expr);
  }

  public boolean solve(DecisionBuilder db, SearchMonitor[] monitors) {
    return operations_research_constraint_solverJNI.Solver_solve__SWIG_0(swigCPtr, this, DecisionBuilder.getCPtr(db), db, monitors);
  }

  public boolean solve(DecisionBuilder db) {
    return operations_research_constraint_solverJNI.Solver_solve__SWIG_1(swigCPtr, this, DecisionBuilder.getCPtr(db), db);
  }

  public boolean solve(DecisionBuilder db, SearchMonitor m1) {
    return operations_research_constraint_solverJNI.Solver_solve__SWIG_2(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1);
  }

  public boolean solve(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2) {
    return operations_research_constraint_solverJNI.Solver_solve__SWIG_3(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1, SearchMonitor.getCPtr(m2), m2);
  }

  public boolean solve(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2, SearchMonitor m3) {
    return operations_research_constraint_solverJNI.Solver_solve__SWIG_4(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1, SearchMonitor.getCPtr(m2), m2, SearchMonitor.getCPtr(m3), m3);
  }

  public boolean solve(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2, SearchMonitor m3, SearchMonitor m4) {
    return operations_research_constraint_solverJNI.Solver_solve__SWIG_5(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1, SearchMonitor.getCPtr(m2), m2, SearchMonitor.getCPtr(m3), m3, SearchMonitor.getCPtr(m4), m4);
  }

  public void newSearch(DecisionBuilder db, SearchMonitor[] monitors) {
    operations_research_constraint_solverJNI.Solver_newSearch__SWIG_0(swigCPtr, this, DecisionBuilder.getCPtr(db), db, monitors);
  }

  public void newSearch(DecisionBuilder db) {
    operations_research_constraint_solverJNI.Solver_newSearch__SWIG_1(swigCPtr, this, DecisionBuilder.getCPtr(db), db);
  }

  public void newSearch(DecisionBuilder db, SearchMonitor m1) {
    operations_research_constraint_solverJNI.Solver_newSearch__SWIG_2(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1);
  }

  public void newSearch(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2) {
    operations_research_constraint_solverJNI.Solver_newSearch__SWIG_3(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1, SearchMonitor.getCPtr(m2), m2);
  }

  public void newSearch(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2, SearchMonitor m3) {
    operations_research_constraint_solverJNI.Solver_newSearch__SWIG_4(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1, SearchMonitor.getCPtr(m2), m2, SearchMonitor.getCPtr(m3), m3);
  }

  public void newSearch(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2, SearchMonitor m3, SearchMonitor m4) {
    operations_research_constraint_solverJNI.Solver_newSearch__SWIG_5(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1, SearchMonitor.getCPtr(m2), m2, SearchMonitor.getCPtr(m3), m3, SearchMonitor.getCPtr(m4), m4);
  }

  public boolean nextSolution() {
    return operations_research_constraint_solverJNI.Solver_nextSolution(swigCPtr, this);
  }

  public void RestartSearch() {
    operations_research_constraint_solverJNI.Solver_RestartSearch(swigCPtr, this);
  }

  public void endSearch() {
    operations_research_constraint_solverJNI.Solver_endSearch(swigCPtr, this);
  }

  public boolean solveAndCommit(DecisionBuilder db, SearchMonitor[] monitors) {
    return operations_research_constraint_solverJNI.Solver_solveAndCommit__SWIG_0(swigCPtr, this, DecisionBuilder.getCPtr(db), db, monitors);
  }

  public boolean solveAndCommit(DecisionBuilder db) {
    return operations_research_constraint_solverJNI.Solver_solveAndCommit__SWIG_1(swigCPtr, this, DecisionBuilder.getCPtr(db), db);
  }

  public boolean solveAndCommit(DecisionBuilder db, SearchMonitor m1) {
    return operations_research_constraint_solverJNI.Solver_solveAndCommit__SWIG_2(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1);
  }

  public boolean solveAndCommit(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2) {
    return operations_research_constraint_solverJNI.Solver_solveAndCommit__SWIG_3(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1, SearchMonitor.getCPtr(m2), m2);
  }

  public boolean solveAndCommit(DecisionBuilder db, SearchMonitor m1, SearchMonitor m2, SearchMonitor m3) {
    return operations_research_constraint_solverJNI.Solver_solveAndCommit__SWIG_4(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(m1), m1, SearchMonitor.getCPtr(m2), m2, SearchMonitor.getCPtr(m3), m3);
  }

  public boolean checkAssignment(Assignment solution) {
    return operations_research_constraint_solverJNI.Solver_checkAssignment(swigCPtr, this, Assignment.getCPtr(solution), solution);
  }

  public boolean CheckConstraint(Constraint ct) {
    return operations_research_constraint_solverJNI.Solver_CheckConstraint(swigCPtr, this, Constraint.getCPtr(ct), ct);
  }

  public int state() {
    return operations_research_constraint_solverJNI.Solver_state(swigCPtr, this);
  }

  public void fail() {
    operations_research_constraint_solverJNI.Solver_fail(swigCPtr, this);
  }

  public SWIGTYPE_p_operations_research__CpModel ExportModel() {
    return new SWIGTYPE_p_operations_research__CpModel(operations_research_constraint_solverJNI.Solver_ExportModel(swigCPtr, this), true);
  }

  public SWIGTYPE_p_operations_research__CpModel ExportModelWithSearchMonitors(SearchMonitor[] monitors) {
    return new SWIGTYPE_p_operations_research__CpModel(operations_research_constraint_solverJNI.Solver_ExportModelWithSearchMonitors(swigCPtr, this, monitors), true);
  }

  public SWIGTYPE_p_operations_research__CpModel ExportModelWithSearchMonitorsAndDecisionBuilder(SearchMonitor[] monitors, DecisionBuilder db) {
    return new SWIGTYPE_p_operations_research__CpModel(operations_research_constraint_solverJNI.Solver_ExportModelWithSearchMonitorsAndDecisionBuilder(swigCPtr, this, monitors, DecisionBuilder.getCPtr(db), db), true);
  }

  public boolean LoadModel(SWIGTYPE_p_operations_research__CpModel model_proto) {
    return operations_research_constraint_solverJNI.Solver_LoadModel(swigCPtr, this, SWIGTYPE_p_operations_research__CpModel.getCPtr(model_proto));
  }

  public boolean LoadModelWithSearchMonitors(SWIGTYPE_p_operations_research__CpModel model_proto, SWIGTYPE_p_std__vectorT_operations_research__SearchMonitor_p_t monitors) {
    return operations_research_constraint_solverJNI.Solver_LoadModelWithSearchMonitors(swigCPtr, this, SWIGTYPE_p_operations_research__CpModel.getCPtr(model_proto), SWIGTYPE_p_std__vectorT_operations_research__SearchMonitor_p_t.getCPtr(monitors));
  }

  public static boolean UpgradeModel(SWIGTYPE_p_operations_research__CpModel proto) {
    return operations_research_constraint_solverJNI.Solver_UpgradeModel(SWIGTYPE_p_operations_research__CpModel.getCPtr(proto));
  }

  public CpModelLoader model_loader() {
    long cPtr = operations_research_constraint_solverJNI.Solver_model_loader(swigCPtr, this);
    return (cPtr == 0) ? null : new CpModelLoader(cPtr, false);
  }

  public String toString() {
    return operations_research_constraint_solverJNI.Solver_toString(swigCPtr, this);
  }

  public static long MemoryUsage() {
    return operations_research_constraint_solverJNI.Solver_MemoryUsage();
  }

  public long wallTime() {
    return operations_research_constraint_solverJNI.Solver_wallTime(swigCPtr, this);
  }

  public long branches() {
    return operations_research_constraint_solverJNI.Solver_branches(swigCPtr, this);
  }

  public long solutions() {
    return operations_research_constraint_solverJNI.Solver_solutions(swigCPtr, this);
  }

  public long demon_runs(int p) {
    return operations_research_constraint_solverJNI.Solver_demon_runs(swigCPtr, this, p);
  }

  public long failures() {
    return operations_research_constraint_solverJNI.Solver_failures(swigCPtr, this);
  }

  public long neighbors() {
    return operations_research_constraint_solverJNI.Solver_neighbors(swigCPtr, this);
  }

  public long filteredNeighbors() {
    return operations_research_constraint_solverJNI.Solver_filteredNeighbors(swigCPtr, this);
  }

  public long acceptedNeighbors() {
    return operations_research_constraint_solverJNI.Solver_acceptedNeighbors(swigCPtr, this);
  }

  public java.math.BigInteger stamp() {
    return operations_research_constraint_solverJNI.Solver_stamp(swigCPtr, this);
  }

  public java.math.BigInteger fail_stamp() {
    return operations_research_constraint_solverJNI.Solver_fail_stamp(swigCPtr, this);
  }

  public IntVar makeIntVar(long min, long max, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntVar__SWIG_0(swigCPtr, this, min, max, name);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIntVar(long[] values, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntVar__SWIG_1(swigCPtr, this, values, name);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIntVar(int[] values, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntVar__SWIG_2(swigCPtr, this, values, name);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIntVar(long min, long max) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntVar__SWIG_3(swigCPtr, this, min, max);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIntVar(long[] values) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntVar__SWIG_4(swigCPtr, this, values);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIntVar(int[] values) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntVar__SWIG_5(swigCPtr, this, values);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeBoolVar(String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeBoolVar__SWIG_0(swigCPtr, this, name);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeBoolVar() {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeBoolVar__SWIG_1(swigCPtr, this);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIntConst(long val, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntConst__SWIG_0(swigCPtr, this, val, name);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIntConst(long val) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntConst__SWIG_1(swigCPtr, this, val);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntExpr makeSum(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSum__SWIG_0(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeSum(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSum__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeSum(IntVar[] vars) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSum__SWIG_2(swigCPtr, this, vars);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeScalProd(IntVar[] vars, long[] coefs) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScalProd__SWIG_0(swigCPtr, this, vars, coefs);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeScalProd(IntVar[] vars, int[] coefs) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScalProd__SWIG_1(swigCPtr, this, vars, coefs);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeDifference(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDifference__SWIG_0(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeDifference(long value, IntExpr expr) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDifference__SWIG_1(swigCPtr, this, value, IntExpr.getCPtr(expr), expr);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeOpposite(IntExpr expr) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeOpposite(swigCPtr, this, IntExpr.getCPtr(expr), expr);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeProd(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeProd__SWIG_0(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeProd(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeProd__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeDiv(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDiv__SWIG_0(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeDiv(IntExpr numerator, IntExpr denominator) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDiv__SWIG_1(swigCPtr, this, IntExpr.getCPtr(numerator), numerator, IntExpr.getCPtr(denominator), denominator);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeAbs(IntExpr expr) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAbs(swigCPtr, this, IntExpr.getCPtr(expr), expr);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeSquare(IntExpr expr) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSquare(swigCPtr, this, IntExpr.getCPtr(expr), expr);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr MakePower(IntExpr expr, long n) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakePower(swigCPtr, this, IntExpr.getCPtr(expr), expr, n);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeElement(long[] values, IntVar index) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeElement__SWIG_0(swigCPtr, this, values, IntVar.getCPtr(index), index);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeElement(int[] values, IntVar index) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeElement__SWIG_1(swigCPtr, this, values, IntVar.getCPtr(index), index);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeElement(LongToLong values, IntVar index) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeElement__SWIG_2(swigCPtr, this, values, IntVar.getCPtr(index), index);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr MakeMonotonicElement(LongToLong values, boolean increasing, IntVar index) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeMonotonicElement(swigCPtr, this, values, increasing, IntVar.getCPtr(index), index);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeElement(LongLongToLong values, IntVar index1, IntVar index2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeElement__SWIG_3(swigCPtr, this, values, IntVar.getCPtr(index1), index1, IntVar.getCPtr(index2), index2);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeElement(IntVar[] vars, IntVar index) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeElement__SWIG_4(swigCPtr, this, vars, IntVar.getCPtr(index), index);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr MakeIndexExpression(IntVar[] vars, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeIndexExpression(swigCPtr, this, vars, value);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public Constraint MakeIfThenElseCt(IntVar condition, IntExpr then_expr, IntExpr else_expr, IntVar target_var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeIfThenElseCt(swigCPtr, this, IntVar.getCPtr(condition), condition, IntExpr.getCPtr(then_expr), then_expr, IntExpr.getCPtr(else_expr), else_expr, IntVar.getCPtr(target_var), target_var);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public IntExpr makeMin(IntVar[] vars) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMin__SWIG_0(swigCPtr, this, vars);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeMin(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMin__SWIG_1(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeMin(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMin__SWIG_2(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeMin(IntExpr expr, int value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMin__SWIG_3(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeMax(IntVar[] vars) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMax__SWIG_0(swigCPtr, this, vars);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeMax(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMax__SWIG_1(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeMax(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMax__SWIG_2(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeMax(IntExpr expr, int value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMax__SWIG_3(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeConvexPiecewiseExpr(IntExpr expr, long early_cost, long early_date, long late_date, long late_cost) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeConvexPiecewiseExpr(swigCPtr, this, IntExpr.getCPtr(expr), expr, early_cost, early_date, late_date, late_cost);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr makeSemiContinuousExpr(IntExpr expr, long fixed_charge, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSemiContinuousExpr(swigCPtr, this, IntExpr.getCPtr(expr), expr, fixed_charge, step);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr MakeModulo(IntExpr x, long mod) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeModulo__SWIG_0(swigCPtr, this, IntExpr.getCPtr(x), x, mod);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr MakeModulo(IntExpr x, IntExpr mod) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeModulo__SWIG_1(swigCPtr, this, IntExpr.getCPtr(x), x, IntExpr.getCPtr(mod), mod);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntExpr MakeConditionalExpression(IntVar condition, IntExpr expr, long unperformed_value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeConditionalExpression(swigCPtr, this, IntVar.getCPtr(condition), condition, IntExpr.getCPtr(expr), expr, unperformed_value);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public Constraint makeTrueConstraint() {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeTrueConstraint(swigCPtr, this);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeFalseConstraint() {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeFalseConstraint__SWIG_0(swigCPtr, this);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeFalseConstraint(String explanation) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeFalseConstraint__SWIG_1(swigCPtr, this, explanation);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIsEqualCstCt(IntExpr var, long value, IntVar boolvar) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsEqualCstCt(swigCPtr, this, IntExpr.getCPtr(var), var, value, IntVar.getCPtr(boolvar), boolvar);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public IntVar makeIsEqualCstVar(IntExpr var, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsEqualCstVar(swigCPtr, this, IntExpr.getCPtr(var), var, value);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public Constraint makeIsEqualVar(IntExpr v1, IntExpr v2, IntVar b) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsEqualVar__SWIG_0(swigCPtr, this, IntExpr.getCPtr(v1), v1, IntExpr.getCPtr(v2), v2, IntVar.getCPtr(b), b);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public IntVar makeIsEqualVar(IntExpr v1, IntExpr v2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsEqualVar__SWIG_1(swigCPtr, this, IntExpr.getCPtr(v1), v1, IntExpr.getCPtr(v2), v2);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public Constraint makeEquality(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeEquality__SWIG_0(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeEquality(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeEquality__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeEquality(IntExpr expr, int value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeEquality__SWIG_2(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIsDifferentCstCt(IntExpr var, long value, IntVar boolvar) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsDifferentCstCt__SWIG_0(swigCPtr, this, IntExpr.getCPtr(var), var, value, IntVar.getCPtr(boolvar), boolvar);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public IntVar makeIsDifferentCstVar(IntExpr var, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsDifferentCstVar__SWIG_0(swigCPtr, this, IntExpr.getCPtr(var), var, value);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIsDifferentCstVar(IntExpr v1, IntExpr v2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsDifferentCstVar__SWIG_1(swigCPtr, this, IntExpr.getCPtr(v1), v1, IntExpr.getCPtr(v2), v2);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public Constraint makeIsDifferentCstCt(IntExpr v1, IntExpr v2, IntVar b) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsDifferentCstCt__SWIG_1(swigCPtr, this, IntExpr.getCPtr(v1), v1, IntExpr.getCPtr(v2), v2, IntVar.getCPtr(b), b);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeNonEquality(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeNonEquality__SWIG_0(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeNonEquality(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeNonEquality__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeNonEquality(IntExpr expr, int value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeNonEquality__SWIG_2(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIsLessOrEqualCstCt(IntExpr var, long value, IntVar boolvar) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsLessOrEqualCstCt(swigCPtr, this, IntExpr.getCPtr(var), var, value, IntVar.getCPtr(boolvar), boolvar);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public IntVar makeIsLessOrEqualCstVar(IntExpr var, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsLessOrEqualCstVar(swigCPtr, this, IntExpr.getCPtr(var), var, value);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIsLessOrEqualVar(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsLessOrEqualVar(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public Constraint makeIsLessOrEqualCt(IntExpr left, IntExpr right, IntVar b) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsLessOrEqualCt(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right, IntVar.getCPtr(b), b);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeLessOrEqual(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLessOrEqual__SWIG_0(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeLessOrEqual(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLessOrEqual__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeLessOrEqual(IntExpr expr, int value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLessOrEqual__SWIG_2(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIsGreaterOrEqualCstCt(IntExpr var, long value, IntVar boolvar) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsGreaterOrEqualCstCt(swigCPtr, this, IntExpr.getCPtr(var), var, value, IntVar.getCPtr(boolvar), boolvar);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public IntVar makeIsGreaterOrEqualCstVar(IntExpr var, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsGreaterOrEqualCstVar(swigCPtr, this, IntExpr.getCPtr(var), var, value);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIsGreaterOrEqualVar(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsGreaterOrEqualVar(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public Constraint makeIsGreaterOrEqualCt(IntExpr left, IntExpr right, IntVar b) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsGreaterOrEqualCt(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right, IntVar.getCPtr(b), b);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeGreaterOrEqual(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeGreaterOrEqual__SWIG_0(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeGreaterOrEqual(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeGreaterOrEqual__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeGreaterOrEqual(IntExpr expr, int value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeGreaterOrEqual__SWIG_2(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIsGreaterCstCt(IntExpr v, long c, IntVar b) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsGreaterCstCt(swigCPtr, this, IntExpr.getCPtr(v), v, c, IntVar.getCPtr(b), b);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public IntVar makeIsGreaterCstVar(IntExpr var, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsGreaterCstVar(swigCPtr, this, IntExpr.getCPtr(var), var, value);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIsGreaterVar(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsGreaterVar(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public Constraint makeIsGreaterCt(IntExpr left, IntExpr right, IntVar b) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsGreaterCt(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right, IntVar.getCPtr(b), b);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeGreater(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeGreater__SWIG_0(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeGreater(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeGreater__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeGreater(IntExpr expr, int value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeGreater__SWIG_2(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIsLessCstCt(IntExpr v, long c, IntVar b) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsLessCstCt(swigCPtr, this, IntExpr.getCPtr(v), v, c, IntVar.getCPtr(b), b);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public IntVar makeIsLessCstVar(IntExpr var, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsLessCstVar(swigCPtr, this, IntExpr.getCPtr(var), var, value);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIsLessVar(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsLessVar(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public Constraint makeIsLessCt(IntExpr left, IntExpr right, IntVar b) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsLessCt(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right, IntVar.getCPtr(b), b);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeLess(IntExpr left, IntExpr right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLess__SWIG_0(swigCPtr, this, IntExpr.getCPtr(left), left, IntExpr.getCPtr(right), right);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeLess(IntExpr expr, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLess__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeLess(IntExpr expr, int value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLess__SWIG_2(swigCPtr, this, IntExpr.getCPtr(expr), expr, value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeSumLessOrEqual(IntVar[] vars, long cst) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSumLessOrEqual(swigCPtr, this, vars, cst);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeSumGreaterOrEqual(IntVar[] vars, long cst) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSumGreaterOrEqual(swigCPtr, this, vars, cst);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeSumEquality(IntVar[] vars, long cst) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSumEquality__SWIG_0(swigCPtr, this, vars, cst);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeSumEquality(IntVar[] vars, IntVar var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSumEquality__SWIG_1(swigCPtr, this, vars, IntVar.getCPtr(var), var);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeScalProdEquality(IntVar[] vars, long[] coefficients, long cst) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScalProdEquality__SWIG_0(swigCPtr, this, vars, coefficients, cst);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeScalProdEquality(IntVar[] vars, int[] coefficients, long cst) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScalProdEquality__SWIG_1(swigCPtr, this, vars, coefficients, cst);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeScalProdEquality(IntVar[] vars, long[] coefficients, IntVar target) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScalProdEquality__SWIG_2(swigCPtr, this, vars, coefficients, IntVar.getCPtr(target), target);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeScalProdEquality(IntVar[] vars, int[] coefficients, IntVar target) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScalProdEquality__SWIG_3(swigCPtr, this, vars, coefficients, IntVar.getCPtr(target), target);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeScalProdGreaterOrEqual(IntVar[] vars, long[] coeffs, long cst) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScalProdGreaterOrEqual__SWIG_0(swigCPtr, this, vars, coeffs, cst);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeScalProdGreaterOrEqual(IntVar[] vars, int[] coeffs, long cst) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScalProdGreaterOrEqual__SWIG_1(swigCPtr, this, vars, coeffs, cst);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeScalProdLessOrEqual(IntVar[] vars, long[] coefficients, long cst) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScalProdLessOrEqual__SWIG_0(swigCPtr, this, vars, coefficients, cst);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeScalProdLessOrEqual(IntVar[] vars, int[] coefficients, long cst) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScalProdLessOrEqual__SWIG_1(swigCPtr, this, vars, coefficients, cst);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeMinEquality(IntVar[] vars, IntVar min_var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeMinEquality(swigCPtr, this, vars, IntVar.getCPtr(min_var), min_var);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeMaxEquality(IntVar[] vars, IntVar max_var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeMaxEquality(swigCPtr, this, vars, IntVar.getCPtr(max_var), max_var);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeElementEquality(long[] vals, IntVar index, IntVar target) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeElementEquality__SWIG_0(swigCPtr, this, vals, IntVar.getCPtr(index), index, IntVar.getCPtr(target), target);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeElementEquality(int[] vals, IntVar index, IntVar target) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeElementEquality__SWIG_1(swigCPtr, this, vals, IntVar.getCPtr(index), index, IntVar.getCPtr(target), target);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeElementEquality(IntVar[] vars, IntVar index, IntVar target) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeElementEquality__SWIG_2(swigCPtr, this, vars, IntVar.getCPtr(index), index, IntVar.getCPtr(target), target);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeElementEquality(IntVar[] vars, IntVar index, long target) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeElementEquality__SWIG_3(swigCPtr, this, vars, IntVar.getCPtr(index), index, target);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeAbsEquality(IntVar var, IntVar abs_var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeAbsEquality(swigCPtr, this, IntVar.getCPtr(var), var, IntVar.getCPtr(abs_var), abs_var);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeIndexOfConstraint(IntVar[] vars, IntVar index, long target) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeIndexOfConstraint(swigCPtr, this, vars, IntVar.getCPtr(index), index, target);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Demon MakeConstraintInitialPropagateCallback(Constraint ct) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeConstraintInitialPropagateCallback(swigCPtr, this, Constraint.getCPtr(ct), ct);
    return (cPtr == 0) ? null : new Demon(cPtr, false);
  }

  public Demon MakeDelayedConstraintInitialPropagateCallback(Constraint ct) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeDelayedConstraintInitialPropagateCallback(swigCPtr, this, Constraint.getCPtr(ct), ct);
    return (cPtr == 0) ? null : new Demon(cPtr, false);
  }

  public Demon makeClosureDemon(VoidToVoid closure) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeClosureDemon(swigCPtr, this, closure);
    return (cPtr == 0) ? null : new Demon(cPtr, false);
  }

  public Constraint makeBetweenCt(IntExpr expr, long l, long u) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeBetweenCt(swigCPtr, this, IntExpr.getCPtr(expr), expr, l, u);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNotBetweenCt(IntExpr expr, long l, long u) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNotBetweenCt(swigCPtr, this, IntExpr.getCPtr(expr), expr, l, u);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIsBetweenCt(IntExpr expr, long l, long u, IntVar b) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsBetweenCt(swigCPtr, this, IntExpr.getCPtr(expr), expr, l, u, IntVar.getCPtr(b), b);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public IntVar MakeIsBetweenVar(IntExpr v, long l, long u) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeIsBetweenVar(swigCPtr, this, IntExpr.getCPtr(v), v, l, u);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public Constraint makeMemberCt(IntExpr expr, long[] values) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMemberCt__SWIG_0(swigCPtr, this, IntExpr.getCPtr(expr), expr, values);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeMemberCt(IntExpr expr, int[] values) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMemberCt__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, values);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNotMemberCt(IntExpr expr, long[] values) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNotMemberCt__SWIG_0(swigCPtr, this, IntExpr.getCPtr(expr), expr, values);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNotMemberCt(IntExpr expr, int[] values) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNotMemberCt__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, values);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNotMemberCt(IntExpr expr, long[] starts, long[] ends) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNotMemberCt__SWIG_2(swigCPtr, this, IntExpr.getCPtr(expr), expr, starts, ends);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNotMemberCt(IntExpr expr, int[] starts, int[] ends) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNotMemberCt__SWIG_3(swigCPtr, this, IntExpr.getCPtr(expr), expr, starts, ends);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIsMemberCt(IntExpr expr, long[] values, IntVar boolvar) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsMemberCt__SWIG_0(swigCPtr, this, IntExpr.getCPtr(expr), expr, values, IntVar.getCPtr(boolvar), boolvar);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIsMemberCt(IntExpr expr, int[] values, IntVar boolvar) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsMemberCt__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, values, IntVar.getCPtr(boolvar), boolvar);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public IntVar makeIsMemberVar(IntExpr expr, long[] values) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsMemberVar__SWIG_0(swigCPtr, this, IntExpr.getCPtr(expr), expr, values);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntVar makeIsMemberVar(IntExpr expr, int[] values) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIsMemberVar__SWIG_1(swigCPtr, this, IntExpr.getCPtr(expr), expr, values);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public Constraint MakeAtMost(SWIGTYPE_p_std__vectorT_operations_research__IntVar_p_t vars, long value, long max_count) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeAtMost(swigCPtr, this, SWIGTYPE_p_std__vectorT_operations_research__IntVar_p_t.getCPtr(vars), value, max_count);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeCount(IntVar[] vars, long value, long max_count) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeCount__SWIG_0(swigCPtr, this, vars, value, max_count);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeCount(IntVar[] vars, long value, IntVar max_count) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeCount__SWIG_1(swigCPtr, this, vars, value, IntVar.getCPtr(max_count), max_count);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeDistribute(IntVar[] vars, long[] values, IntVar[] cards) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDistribute__SWIG_0(swigCPtr, this, vars, values, cards);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeDistribute(IntVar[] vars, int[] values, IntVar[] cards) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDistribute__SWIG_1(swigCPtr, this, vars, values, cards);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeDistribute(IntVar[] vars, IntVar[] cards) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDistribute__SWIG_2(swigCPtr, this, vars, cards);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeDistribute(IntVar[] vars, long card_min, long card_max, long card_size) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDistribute__SWIG_3(swigCPtr, this, vars, card_min, card_max, card_size);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeDistribute(IntVar[] vars, long[] card_min, long[] card_max) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDistribute__SWIG_4(swigCPtr, this, vars, card_min, card_max);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeDistribute(IntVar[] vars, int[] card_min, int[] card_max) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDistribute__SWIG_5(swigCPtr, this, vars, card_min, card_max);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeDistribute(IntVar[] vars, long[] values, long[] card_min, long[] card_max) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDistribute__SWIG_6(swigCPtr, this, vars, values, card_min, card_max);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeDistribute(IntVar[] vars, int[] values, int[] card_min, int[] card_max) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDistribute__SWIG_7(swigCPtr, this, vars, values, card_min, card_max);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeDeviation(IntVar[] vars, IntVar deviation_var, long total_sum) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDeviation(swigCPtr, this, vars, IntVar.getCPtr(deviation_var), deviation_var, total_sum);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeAllDifferent(IntVar[] vars) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAllDifferent__SWIG_0(swigCPtr, this, vars);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeAllDifferent(IntVar[] vars, boolean stronger_propagation) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAllDifferent__SWIG_1(swigCPtr, this, vars, stronger_propagation);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeAllDifferentExcept(IntVar[] vars, long escape_value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeAllDifferentExcept(swigCPtr, this, vars, escape_value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeSortingConstraint(IntVar[] vars, IntVar[] sorted) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSortingConstraint(swigCPtr, this, vars, sorted);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeLexicalLess(IntVar[] left, IntVar[] right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeLexicalLess(swigCPtr, this, left, right);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeLexicalLessOrEqual(IntVar[] left, IntVar[] right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeLexicalLessOrEqual(swigCPtr, this, left, right);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeInversePermutationConstraint(IntVar[] left, IntVar[] right) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeInversePermutationConstraint(swigCPtr, this, left, right);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeIndexOfFirstMaxValueConstraint(IntVar index, IntVar[] vars) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeIndexOfFirstMaxValueConstraint(swigCPtr, this, IntVar.getCPtr(index), index, vars);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeIndexOfFirstMinValueConstraint(IntVar index, IntVar[] vars) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeIndexOfFirstMinValueConstraint(swigCPtr, this, IntVar.getCPtr(index), index, vars);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNullIntersect(IntVar[] first_vars, IntVar[] second_vars) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNullIntersect(swigCPtr, this, first_vars, second_vars);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNullIntersectExcept(IntVar[] first_vars, IntVar[] second_vars, long escape_value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNullIntersectExcept(swigCPtr, this, first_vars, second_vars, escape_value);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeNoCycle(IntVar[] nexts, IntVar[] active, LongToBoolean sink_handler) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeNoCycle__SWIG_0(swigCPtr, this, nexts, active, sink_handler);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeNoCycle(IntVar[] nexts, IntVar[] active) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeNoCycle__SWIG_1(swigCPtr, this, nexts, active);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeNoCycle(IntVar[] nexts, IntVar[] active, LongToBoolean sink_handler, boolean assume_paths) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeNoCycle__SWIG_2(swigCPtr, this, nexts, active, sink_handler, assume_paths);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeCircuit(IntVar[] nexts) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeCircuit(swigCPtr, this, nexts);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeSubCircuit(IntVar[] nexts) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeSubCircuit(swigCPtr, this, nexts);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makePathCumul(IntVar[] nexts, IntVar[] active, IntVar[] cumuls, IntVar[] transits) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePathCumul__SWIG_0(swigCPtr, this, nexts, active, cumuls, transits);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeDelayedPathCumul(IntVar[] nexts, IntVar[] active, IntVar[] cumuls, IntVar[] transits) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeDelayedPathCumul(swigCPtr, this, nexts, active, cumuls, transits);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makePathCumul(IntVar[] nexts, IntVar[] active, IntVar[] cumuls, LongLongToLong transit_evaluator) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePathCumul__SWIG_1(swigCPtr, this, nexts, active, cumuls, transit_evaluator);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makePathCumul(IntVar[] nexts, IntVar[] active, IntVar[] cumuls, IntVar[] slacks, LongLongToLong transit_evaluator) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePathCumul__SWIG_2(swigCPtr, this, nexts, active, cumuls, slacks, transit_evaluator);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakePathConnected(SWIGTYPE_p_std__vectorT_operations_research__IntVar_p_t nexts, long[] sources, long[] sinks, SWIGTYPE_p_std__vectorT_operations_research__IntVar_p_t status) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakePathConnected(swigCPtr, this, SWIGTYPE_p_std__vectorT_operations_research__IntVar_p_t.getCPtr(nexts), sources, sinks, SWIGTYPE_p_std__vectorT_operations_research__IntVar_p_t.getCPtr(status));
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeMapDomain(IntVar var, IntVar[] actives) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMapDomain(swigCPtr, this, IntVar.getCPtr(var), var, actives);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeAllowedAssignment(IntVar[] vars, IntTupleSet tuples) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAllowedAssignment(swigCPtr, this, vars, IntTupleSet.getCPtr(tuples), tuples);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeTransitionConstraint(IntVar[] vars, IntTupleSet transition_table, long initial_state, long[] final_states) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeTransitionConstraint__SWIG_0(swigCPtr, this, vars, IntTupleSet.getCPtr(transition_table), transition_table, initial_state, final_states);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeTransitionConstraint(IntVar[] vars, IntTupleSet transition_table, long initial_state, int[] final_states) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeTransitionConstraint__SWIG_1(swigCPtr, this, vars, IntTupleSet.getCPtr(transition_table), transition_table, initial_state, final_states);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNonOverlappingBoxesConstraint(IntVar[] x_vars, IntVar[] y_vars, IntVar[] x_size, IntVar[] y_size) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNonOverlappingBoxesConstraint__SWIG_0(swigCPtr, this, x_vars, y_vars, x_size, y_size);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNonOverlappingBoxesConstraint(IntVar[] x_vars, IntVar[] y_vars, long[] x_size, long[] y_size) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNonOverlappingBoxesConstraint__SWIG_1(swigCPtr, this, x_vars, y_vars, x_size, y_size);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNonOverlappingBoxesConstraint(IntVar[] x_vars, IntVar[] y_vars, int[] x_size, int[] y_size) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNonOverlappingBoxesConstraint__SWIG_2(swigCPtr, this, x_vars, y_vars, x_size, y_size);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNonOverlappingNonStrictBoxesConstraint(IntVar[] x_vars, IntVar[] y_vars, IntVar[] x_size, IntVar[] y_size) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNonOverlappingNonStrictBoxesConstraint__SWIG_0(swigCPtr, this, x_vars, y_vars, x_size, y_size);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNonOverlappingNonStrictBoxesConstraint(IntVar[] x_vars, IntVar[] y_vars, long[] x_size, long[] y_size) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNonOverlappingNonStrictBoxesConstraint__SWIG_1(swigCPtr, this, x_vars, y_vars, x_size, y_size);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeNonOverlappingNonStrictBoxesConstraint(IntVar[] x_vars, IntVar[] y_vars, int[] x_size, int[] y_size) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNonOverlappingNonStrictBoxesConstraint__SWIG_2(swigCPtr, this, x_vars, y_vars, x_size, y_size);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Pack makePack(IntVar[] vars, int number_of_bins) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePack(swigCPtr, this, vars, number_of_bins);
    return (cPtr == 0) ? null : new Pack(cPtr, false);
  }

  public IntervalVar makeFixedDurationIntervalVar(long start_min, long start_max, long duration, boolean optional, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeFixedDurationIntervalVar__SWIG_0(swigCPtr, this, start_min, start_max, duration, optional, name);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public IntervalVar makeFixedDurationIntervalVar(IntVar start_variable, long duration, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeFixedDurationIntervalVar__SWIG_1(swigCPtr, this, IntVar.getCPtr(start_variable), start_variable, duration, name);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public IntervalVar makeFixedDurationIntervalVar(IntVar start_variable, long duration, IntVar performed_variable, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeFixedDurationIntervalVar__SWIG_2(swigCPtr, this, IntVar.getCPtr(start_variable), start_variable, duration, IntVar.getCPtr(performed_variable), performed_variable, name);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public IntervalVar makeFixedInterval(long start, long duration, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeFixedInterval(swigCPtr, this, start, duration, name);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public IntervalVar MakeIntervalVar(long start_min, long start_max, long duration_min, long duration_max, long end_min, long end_max, boolean optional, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeIntervalVar(swigCPtr, this, start_min, start_max, duration_min, duration_max, end_min, end_max, optional, name);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public void MakeIntervalVarArray(int count, long start_min, long start_max, long duration_min, long duration_max, long end_min, long end_max, boolean optional, String name, SWIGTYPE_p_std__vectorT_operations_research__IntervalVar_p_t array) {
    operations_research_constraint_solverJNI.Solver_MakeIntervalVarArray(swigCPtr, this, count, start_min, start_max, duration_min, duration_max, end_min, end_max, optional, name, SWIGTYPE_p_std__vectorT_operations_research__IntervalVar_p_t.getCPtr(array));
  }

  public IntervalVar makeMirrorInterval(IntervalVar interval_var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMirrorInterval(swigCPtr, this, IntervalVar.getCPtr(interval_var), interval_var);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public IntervalVar MakeFixedDurationStartSyncedOnStartIntervalVar(IntervalVar interval_var, long duration, long offset) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeFixedDurationStartSyncedOnStartIntervalVar(swigCPtr, this, IntervalVar.getCPtr(interval_var), interval_var, duration, offset);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public IntervalVar MakeFixedDurationStartSyncedOnEndIntervalVar(IntervalVar interval_var, long duration, long offset) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeFixedDurationStartSyncedOnEndIntervalVar(swigCPtr, this, IntervalVar.getCPtr(interval_var), interval_var, duration, offset);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public IntervalVar MakeFixedDurationEndSyncedOnStartIntervalVar(IntervalVar interval_var, long duration, long offset) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeFixedDurationEndSyncedOnStartIntervalVar(swigCPtr, this, IntervalVar.getCPtr(interval_var), interval_var, duration, offset);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public IntervalVar MakeFixedDurationEndSyncedOnEndIntervalVar(IntervalVar interval_var, long duration, long offset) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeFixedDurationEndSyncedOnEndIntervalVar(swigCPtr, this, IntervalVar.getCPtr(interval_var), interval_var, duration, offset);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public IntervalVar MakeIntervalRelaxedMin(IntervalVar interval_var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeIntervalRelaxedMin(swigCPtr, this, IntervalVar.getCPtr(interval_var), interval_var);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public IntervalVar MakeIntervalRelaxedMax(IntervalVar interval_var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeIntervalRelaxedMax(swigCPtr, this, IntervalVar.getCPtr(interval_var), interval_var);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public Constraint makeIntervalVarRelation(IntervalVar t, int r, long d) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntervalVarRelation__SWIG_0(swigCPtr, this, IntervalVar.getCPtr(t), t, r, d);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIntervalVarRelation(IntervalVar t1, int r, IntervalVar t2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntervalVarRelation__SWIG_1(swigCPtr, this, IntervalVar.getCPtr(t1), t1, r, IntervalVar.getCPtr(t2), t2);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeIntervalVarRelationWithDelay(IntervalVar t1, int r, IntervalVar t2, long delay) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeIntervalVarRelationWithDelay(swigCPtr, this, IntervalVar.getCPtr(t1), t1, r, IntervalVar.getCPtr(t2), t2, delay);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeTemporalDisjunction(IntervalVar t1, IntervalVar t2, IntVar alt) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeTemporalDisjunction__SWIG_0(swigCPtr, this, IntervalVar.getCPtr(t1), t1, IntervalVar.getCPtr(t2), t2, IntVar.getCPtr(alt), alt);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeTemporalDisjunction(IntervalVar t1, IntervalVar t2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeTemporalDisjunction__SWIG_1(swigCPtr, this, IntervalVar.getCPtr(t1), t1, IntervalVar.getCPtr(t2), t2);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public DisjunctiveConstraint makeDisjunctiveConstraint(IntervalVar[] intervals, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDisjunctiveConstraint(swigCPtr, this, intervals, name);
    return (cPtr == 0) ? null : new DisjunctiveConstraint(cPtr, false);
  }

  public DisjunctiveConstraint MakeStrictDisjunctiveConstraint(IntervalVar[] intervals, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeStrictDisjunctiveConstraint(swigCPtr, this, intervals, name);
    return (cPtr == 0) ? null : new DisjunctiveConstraint(cPtr, false);
  }

  public Constraint makeCumulative(IntervalVar[] intervals, long[] demands, long capacity, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeCumulative__SWIG_0(swigCPtr, this, intervals, demands, capacity, name);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeCumulative(IntervalVar[] intervals, int[] demands, long capacity, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeCumulative__SWIG_1(swigCPtr, this, intervals, demands, capacity, name);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeCumulative(IntervalVar[] intervals, long[] demands, IntVar capacity, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeCumulative__SWIG_2(swigCPtr, this, intervals, demands, IntVar.getCPtr(capacity), capacity, name);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeCumulative(IntervalVar[] intervals, int[] demands, IntVar capacity, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeCumulative__SWIG_3(swigCPtr, this, intervals, demands, IntVar.getCPtr(capacity), capacity, name);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeCumulative(IntervalVar[] intervals, IntVar[] demands, long capacity, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeCumulative__SWIG_4(swigCPtr, this, intervals, demands, capacity, name);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeCumulative(IntervalVar[] intervals, IntVar[] demands, IntVar capacity, String name) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeCumulative__SWIG_5(swigCPtr, this, intervals, demands, IntVar.getCPtr(capacity), capacity, name);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint MakeCover(IntervalVar[] vars, IntervalVar target_var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeCover(swigCPtr, this, vars, IntervalVar.getCPtr(target_var), target_var);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Constraint makeEquality(IntervalVar var1, IntervalVar var2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeEquality__SWIG_3(swigCPtr, this, IntervalVar.getCPtr(var1), var1, IntervalVar.getCPtr(var2), var2);
    return (cPtr == 0) ? null : new Constraint(cPtr, false);
  }

  public Assignment makeAssignment() {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAssignment__SWIG_0(swigCPtr, this);
    return (cPtr == 0) ? null : new Assignment(cPtr, false);
  }

  public Assignment makeAssignment(Assignment a) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAssignment__SWIG_1(swigCPtr, this, Assignment.getCPtr(a), a);
    return (cPtr == 0) ? null : new Assignment(cPtr, false);
  }

  public SolutionCollector makeFirstSolutionCollector(Assignment assignment) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeFirstSolutionCollector__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    return (cPtr == 0) ? null : new SolutionCollector(cPtr, false);
  }

  public SolutionCollector makeFirstSolutionCollector() {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeFirstSolutionCollector__SWIG_1(swigCPtr, this);
    return (cPtr == 0) ? null : new SolutionCollector(cPtr, false);
  }

  public SolutionCollector makeLastSolutionCollector(Assignment assignment) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLastSolutionCollector__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    return (cPtr == 0) ? null : new SolutionCollector(cPtr, false);
  }

  public SolutionCollector makeLastSolutionCollector() {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLastSolutionCollector__SWIG_1(swigCPtr, this);
    return (cPtr == 0) ? null : new SolutionCollector(cPtr, false);
  }

  public SolutionCollector makeBestValueSolutionCollector(Assignment assignment, boolean maximize) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeBestValueSolutionCollector__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment, maximize);
    return (cPtr == 0) ? null : new SolutionCollector(cPtr, false);
  }

  public SolutionCollector makeBestValueSolutionCollector(boolean maximize) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeBestValueSolutionCollector__SWIG_1(swigCPtr, this, maximize);
    return (cPtr == 0) ? null : new SolutionCollector(cPtr, false);
  }

  public SolutionCollector MakeNBestValueSolutionCollector(Assignment assignment, int solution_count, boolean maximize) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNBestValueSolutionCollector__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment, solution_count, maximize);
    return (cPtr == 0) ? null : new SolutionCollector(cPtr, false);
  }

  public SolutionCollector MakeNBestValueSolutionCollector(int solution_count, boolean maximize) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNBestValueSolutionCollector__SWIG_1(swigCPtr, this, solution_count, maximize);
    return (cPtr == 0) ? null : new SolutionCollector(cPtr, false);
  }

  public SolutionCollector makeAllSolutionCollector(Assignment assignment) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAllSolutionCollector__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    return (cPtr == 0) ? null : new SolutionCollector(cPtr, false);
  }

  public SolutionCollector makeAllSolutionCollector() {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAllSolutionCollector__SWIG_1(swigCPtr, this);
    return (cPtr == 0) ? null : new SolutionCollector(cPtr, false);
  }

  public OptimizeVar makeMinimize(IntVar v, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMinimize(swigCPtr, this, IntVar.getCPtr(v), v, step);
    return (cPtr == 0) ? null : new OptimizeVar(cPtr, false);
  }

  public OptimizeVar makeMaximize(IntVar v, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeMaximize(swigCPtr, this, IntVar.getCPtr(v), v, step);
    return (cPtr == 0) ? null : new OptimizeVar(cPtr, false);
  }

  public OptimizeVar makeOptimize(boolean maximize, IntVar v, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeOptimize(swigCPtr, this, maximize, IntVar.getCPtr(v), v, step);
    return (cPtr == 0) ? null : new OptimizeVar(cPtr, false);
  }

  public OptimizeVar makeWeightedMinimize(IntVar[] sub_objectives, long[] weights, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeWeightedMinimize__SWIG_0(swigCPtr, this, sub_objectives, weights, step);
    return (cPtr == 0) ? null : new OptimizeVar(cPtr, false);
  }

  public OptimizeVar makeWeightedMinimize(IntVar[] sub_objectives, int[] weights, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeWeightedMinimize__SWIG_1(swigCPtr, this, sub_objectives, weights, step);
    return (cPtr == 0) ? null : new OptimizeVar(cPtr, false);
  }

  public OptimizeVar makeWeightedMaximize(IntVar[] sub_objectives, long[] weights, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeWeightedMaximize__SWIG_0(swigCPtr, this, sub_objectives, weights, step);
    return (cPtr == 0) ? null : new OptimizeVar(cPtr, false);
  }

  public OptimizeVar makeWeightedMaximize(IntVar[] sub_objectives, int[] weights, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeWeightedMaximize__SWIG_1(swigCPtr, this, sub_objectives, weights, step);
    return (cPtr == 0) ? null : new OptimizeVar(cPtr, false);
  }

  public OptimizeVar makeWeightedOptimize(boolean maximize, IntVar[] sub_objectives, long[] weights, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeWeightedOptimize__SWIG_0(swigCPtr, this, maximize, sub_objectives, weights, step);
    return (cPtr == 0) ? null : new OptimizeVar(cPtr, false);
  }

  public OptimizeVar makeWeightedOptimize(boolean maximize, IntVar[] sub_objectives, int[] weights, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeWeightedOptimize__SWIG_1(swigCPtr, this, maximize, sub_objectives, weights, step);
    return (cPtr == 0) ? null : new OptimizeVar(cPtr, false);
  }

  public SearchMonitor makeTabuSearch(boolean maximize, IntVar v, long step, IntVar[] vars, long keep_tenure, long forbid_tenure, double tabu_factor) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeTabuSearch(swigCPtr, this, maximize, IntVar.getCPtr(v), v, step, vars, keep_tenure, forbid_tenure, tabu_factor);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor MakeGenericTabuSearch(boolean maximize, IntVar v, long step, IntVar[] tabu_vars, long forbid_tenure) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeGenericTabuSearch(swigCPtr, this, maximize, IntVar.getCPtr(v), v, step, tabu_vars, forbid_tenure);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSimulatedAnnealing(boolean maximize, IntVar v, long step, long initial_temperature) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSimulatedAnnealing(swigCPtr, this, maximize, IntVar.getCPtr(v), v, step, initial_temperature);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeGuidedLocalSearch(boolean maximize, IntVar objective, LongLongToLong objective_function, long step, IntVar[] vars, double penalty_factor) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeGuidedLocalSearch__SWIG_0(swigCPtr, this, maximize, IntVar.getCPtr(objective), objective, objective_function, step, vars, penalty_factor);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeGuidedLocalSearch(boolean maximize, IntVar objective, LongLongLongToLong objective_function, long step, IntVar[] vars, IntVar[] secondary_vars, double penalty_factor) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeGuidedLocalSearch__SWIG_1(swigCPtr, this, maximize, IntVar.getCPtr(objective), objective, objective_function, step, vars, secondary_vars, penalty_factor);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeLubyRestart(int scale_factor) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLubyRestart(swigCPtr, this, scale_factor);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeConstantRestart(int frequency) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeConstantRestart(swigCPtr, this, frequency);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchLimit makeTimeLimit(long time_in_ms) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeTimeLimit(swigCPtr, this, time_in_ms);
    return (cPtr == 0) ? null : new SearchLimit(cPtr, false);
  }

  public SearchLimit makeBranchesLimit(long branches) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeBranchesLimit(swigCPtr, this, branches);
    return (cPtr == 0) ? null : new SearchLimit(cPtr, false);
  }

  public SearchLimit makeFailuresLimit(long failures) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeFailuresLimit(swigCPtr, this, failures);
    return (cPtr == 0) ? null : new SearchLimit(cPtr, false);
  }

  public SearchLimit makeSolutionsLimit(long solutions) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSolutionsLimit(swigCPtr, this, solutions);
    return (cPtr == 0) ? null : new SearchLimit(cPtr, false);
  }

  public SearchLimit makeLimit(long time, long branches, long failures, long solutions) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLimit__SWIG_0(swigCPtr, this, time, branches, failures, solutions);
    return (cPtr == 0) ? null : new SearchLimit(cPtr, false);
  }

  public SearchLimit makeLimit(long time, long branches, long failures, long solutions, boolean smart_time_check) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLimit__SWIG_1(swigCPtr, this, time, branches, failures, solutions, smart_time_check);
    return (cPtr == 0) ? null : new SearchLimit(cPtr, false);
  }

  public SearchLimit makeLimit(long time, long branches, long failures, long solutions, boolean smart_time_check, boolean cumulative) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLimit__SWIG_2(swigCPtr, this, time, branches, failures, solutions, smart_time_check, cumulative);
    return (cPtr == 0) ? null : new SearchLimit(cPtr, false);
  }

  public SearchLimit makeLimit(com.google.ortools.constraintsolver.SearchLimitParameters proto) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLimit__SWIG_3(swigCPtr, this, proto.toByteArray());
    return (cPtr == 0) ? null : new SearchLimit(cPtr, false);
  }

  public com.google.ortools.constraintsolver.SearchLimitParameters makeDefaultSearchLimitParameters() {
  byte[] buf = operations_research_constraint_solverJNI.Solver_makeDefaultSearchLimitParameters(swigCPtr, this);
  if (buf == null || buf.length == 0) {
    return null;
  }
  try {
    return com.google.ortools.constraintsolver.SearchLimitParameters.parseFrom(buf);
  } catch (com.google.protobuf.InvalidProtocolBufferException e) {
    throw new RuntimeException(
        "Unable to parse com.google.ortools.constraintsolver.SearchLimitParameters protocol message.");
  }
}

  public SearchLimit makeLimit(SearchLimit limit_1, SearchLimit limit_2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLimit__SWIG_4(swigCPtr, this, SearchLimit.getCPtr(limit_1), limit_1, SearchLimit.getCPtr(limit_2), limit_2);
    return (cPtr == 0) ? null : new SearchLimit(cPtr, false);
  }

  public void updateLimits(long time, long branches, long failures, long solutions, SearchLimit limit) {
    operations_research_constraint_solverJNI.Solver_updateLimits(swigCPtr, this, time, branches, failures, solutions, SearchLimit.getCPtr(limit), limit);
  }

  public long getTime(SearchLimit limit) {
    return operations_research_constraint_solverJNI.Solver_getTime(swigCPtr, this, SearchLimit.getCPtr(limit), limit);
  }

  public SearchLimit makeCustomLimit(VoidToBoolean limiter) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeCustomLimit(swigCPtr, this, limiter);
    return (cPtr == 0) ? null : new SearchLimit(cPtr, false);
  }

  public NoGoodManager MakeNoGoodManager() {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNoGoodManager(swigCPtr, this);
    return (cPtr == 0) ? null : new NoGoodManager(cPtr, false);
  }

  public SearchMonitor makeTreeMonitor(IntVar[] vars, String file_tree, String file_visualization) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeTreeMonitor__SWIG_0(swigCPtr, this, vars, file_tree, file_visualization);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeTreeMonitor(IntVar[] vars, String file_config, String file_tree, String file_visualization) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeTreeMonitor__SWIG_1(swigCPtr, this, vars, file_config, file_tree, file_visualization);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSearchLog(int branch_period) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSearchLog__SWIG_0(swigCPtr, this, branch_period);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSearchLog(int branch_period, IntVar var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSearchLog__SWIG_1(swigCPtr, this, branch_period, IntVar.getCPtr(var), var);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSearchLog(int branch_period, VoidToString display_callback) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSearchLog__SWIG_2(swigCPtr, this, branch_period, display_callback);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSearchLog(int branch_period, IntVar var, VoidToString display_callback) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSearchLog__SWIG_3(swigCPtr, this, branch_period, IntVar.getCPtr(var), var, display_callback);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSearchLog(int branch_period, OptimizeVar opt_var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSearchLog__SWIG_4(swigCPtr, this, branch_period, OptimizeVar.getCPtr(opt_var), opt_var);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSearchLog(int branch_period, OptimizeVar opt_var, VoidToString display_callback) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSearchLog__SWIG_5(swigCPtr, this, branch_period, OptimizeVar.getCPtr(opt_var), opt_var, display_callback);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSearchTrace(String prefix) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSearchTrace(swigCPtr, this, prefix);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor MakeEnterSearchCallback(VoidToVoid callback) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeEnterSearchCallback(swigCPtr, this, callback);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor MakeExitSearchCallback(VoidToVoid callback) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeExitSearchCallback(swigCPtr, this, callback);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor MakeAtSolutionCallback(VoidToVoid callback) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeAtSolutionCallback(swigCPtr, this, callback);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public ModelVisitor MakePrintModelVisitor() {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakePrintModelVisitor(swigCPtr, this);
    return (cPtr == 0) ? null : new ModelVisitor(cPtr, false);
  }

  public ModelVisitor MakeStatisticsModelVisitor() {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeStatisticsModelVisitor(swigCPtr, this);
    return (cPtr == 0) ? null : new ModelVisitor(cPtr, false);
  }

  public SearchMonitor makeSymmetryManager(SymmetryBreaker[] visitors) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSymmetryManager__SWIG_0(swigCPtr, this, visitors);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSymmetryManager(SymmetryBreaker v1) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSymmetryManager__SWIG_1(swigCPtr, this, SymmetryBreaker.getCPtr(v1), v1);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSymmetryManager(SymmetryBreaker v1, SymmetryBreaker v2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSymmetryManager__SWIG_2(swigCPtr, this, SymmetryBreaker.getCPtr(v1), v1, SymmetryBreaker.getCPtr(v2), v2);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSymmetryManager(SymmetryBreaker v1, SymmetryBreaker v2, SymmetryBreaker v3) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSymmetryManager__SWIG_3(swigCPtr, this, SymmetryBreaker.getCPtr(v1), v1, SymmetryBreaker.getCPtr(v2), v2, SymmetryBreaker.getCPtr(v3), v3);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public SearchMonitor makeSymmetryManager(SymmetryBreaker v1, SymmetryBreaker v2, SymmetryBreaker v3, SymmetryBreaker v4) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSymmetryManager__SWIG_4(swigCPtr, this, SymmetryBreaker.getCPtr(v1), v1, SymmetryBreaker.getCPtr(v2), v2, SymmetryBreaker.getCPtr(v3), v3, SymmetryBreaker.getCPtr(v4), v4);
    return (cPtr == 0) ? null : new SearchMonitor(cPtr, false);
  }

  public Decision makeAssignVariableValue(IntVar var, long val) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAssignVariableValue(swigCPtr, this, IntVar.getCPtr(var), var, val);
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public Decision MakeVariableLessOrEqualValue(IntVar var, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeVariableLessOrEqualValue(swigCPtr, this, IntVar.getCPtr(var), var, value);
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public Decision MakeVariableGreaterOrEqualValue(IntVar var, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeVariableGreaterOrEqualValue(swigCPtr, this, IntVar.getCPtr(var), var, value);
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public Decision makeSplitVariableDomain(IntVar var, long val, boolean start_with_lower_half) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSplitVariableDomain(swigCPtr, this, IntVar.getCPtr(var), var, val, start_with_lower_half);
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public Decision makeAssignVariableValueOrFail(IntVar var, long value) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAssignVariableValueOrFail(swigCPtr, this, IntVar.getCPtr(var), var, value);
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public Decision makeAssignVariablesValues(IntVar[] vars, long[] values) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeAssignVariablesValues(swigCPtr, this, vars, values);
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public Decision makeFailDecision() {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeFailDecision(swigCPtr, this);
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public DecisionBuilder compose(DecisionBuilder db1, DecisionBuilder db2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_compose__SWIG_0(swigCPtr, this, DecisionBuilder.getCPtr(db1), db1, DecisionBuilder.getCPtr(db2), db2);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder compose(DecisionBuilder db1, DecisionBuilder db2, DecisionBuilder db3) {
    long cPtr = operations_research_constraint_solverJNI.Solver_compose__SWIG_1(swigCPtr, this, DecisionBuilder.getCPtr(db1), db1, DecisionBuilder.getCPtr(db2), db2, DecisionBuilder.getCPtr(db3), db3);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder compose(DecisionBuilder db1, DecisionBuilder db2, DecisionBuilder db3, DecisionBuilder db4) {
    long cPtr = operations_research_constraint_solverJNI.Solver_compose__SWIG_2(swigCPtr, this, DecisionBuilder.getCPtr(db1), db1, DecisionBuilder.getCPtr(db2), db2, DecisionBuilder.getCPtr(db3), db3, DecisionBuilder.getCPtr(db4), db4);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder compose(DecisionBuilder[] dbs) {
    long cPtr = operations_research_constraint_solverJNI.Solver_compose__SWIG_3(swigCPtr, this, dbs);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder tryDecisions(DecisionBuilder db1, DecisionBuilder db2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_tryDecisions__SWIG_0(swigCPtr, this, DecisionBuilder.getCPtr(db1), db1, DecisionBuilder.getCPtr(db2), db2);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder tryDecisions(DecisionBuilder db1, DecisionBuilder db2, DecisionBuilder db3) {
    long cPtr = operations_research_constraint_solverJNI.Solver_tryDecisions__SWIG_1(swigCPtr, this, DecisionBuilder.getCPtr(db1), db1, DecisionBuilder.getCPtr(db2), db2, DecisionBuilder.getCPtr(db3), db3);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder tryDecisions(DecisionBuilder db1, DecisionBuilder db2, DecisionBuilder db3, DecisionBuilder db4) {
    long cPtr = operations_research_constraint_solverJNI.Solver_tryDecisions__SWIG_2(swigCPtr, this, DecisionBuilder.getCPtr(db1), db1, DecisionBuilder.getCPtr(db2), db2, DecisionBuilder.getCPtr(db3), db3, DecisionBuilder.getCPtr(db4), db4);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder tryDecisions(DecisionBuilder[] dbs) {
    long cPtr = operations_research_constraint_solverJNI.Solver_tryDecisions__SWIG_3(swigCPtr, this, dbs);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar[] vars, int var_str, int val_str) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_0(swigCPtr, this, vars, var_str, val_str);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar[] vars, LongToLong var_evaluator, int val_str) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_1(swigCPtr, this, vars, var_evaluator, val_str);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar[] vars, int var_str, LongLongToLong value_evaluator) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_2(swigCPtr, this, vars, var_str, value_evaluator);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar[] vars, int var_str, LongLongLongToBoolean var_val1_val2_comparator) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_3(swigCPtr, this, vars, var_str, var_val1_val2_comparator);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar[] vars, LongToLong var_evaluator, LongLongToLong value_evaluator) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_4(swigCPtr, this, vars, var_evaluator, value_evaluator);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar[] vars, int var_str, LongLongToLong value_evaluator, LongToLong tie_breaker) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_5(swigCPtr, this, vars, var_str, value_evaluator, tie_breaker);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar[] vars, LongToLong var_evaluator, LongLongToLong value_evaluator, LongToLong tie_breaker) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_6(swigCPtr, this, vars, var_evaluator, value_evaluator, tie_breaker);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeDefaultPhase(IntVar[] vars) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDefaultPhase__SWIG_0(swigCPtr, this, vars);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeDefaultPhase(IntVar[] vars, DefaultPhaseParameters parameters) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDefaultPhase__SWIG_1(swigCPtr, this, vars, DefaultPhaseParameters.getCPtr(parameters), parameters);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar v0, int var_str, int val_str) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_7(swigCPtr, this, IntVar.getCPtr(v0), v0, var_str, val_str);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar v0, IntVar v1, int var_str, int val_str) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_8(swigCPtr, this, IntVar.getCPtr(v0), v0, IntVar.getCPtr(v1), v1, var_str, val_str);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar v0, IntVar v1, IntVar v2, int var_str, int val_str) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_9(swigCPtr, this, IntVar.getCPtr(v0), v0, IntVar.getCPtr(v1), v1, IntVar.getCPtr(v2), v2, var_str, val_str);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar v0, IntVar v1, IntVar v2, IntVar v3, int var_str, int val_str) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_10(swigCPtr, this, IntVar.getCPtr(v0), v0, IntVar.getCPtr(v1), v1, IntVar.getCPtr(v2), v2, IntVar.getCPtr(v3), v3, var_str, val_str);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public Decision makeScheduleOrPostpone(IntervalVar var, long est, SWIGTYPE_p_long_long marker) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeScheduleOrPostpone(swigCPtr, this, IntervalVar.getCPtr(var), var, est, SWIGTYPE_p_long_long.getCPtr(marker));
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public Decision MakeScheduleOrExpedite(IntervalVar var, long est, SWIGTYPE_p_long_long marker) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeScheduleOrExpedite(swigCPtr, this, IntervalVar.getCPtr(var), var, est, SWIGTYPE_p_long_long.getCPtr(marker));
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public Decision makeRankFirstInterval(SequenceVar sequence, int index) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeRankFirstInterval(swigCPtr, this, SequenceVar.getCPtr(sequence), sequence, index);
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public Decision makeRankLastInterval(SequenceVar sequence, int index) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeRankLastInterval(swigCPtr, this, SequenceVar.getCPtr(sequence), sequence, index);
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar[] vars, LongLongToLong eval, int str) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_11(swigCPtr, this, vars, eval, str);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntVar[] vars, LongLongToLong eval, LongToLong tie_breaker, int str) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_12(swigCPtr, this, vars, eval, tie_breaker, str);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(IntervalVar[] intervals, int str) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_13(swigCPtr, this, intervals, str);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makePhase(SequenceVar[] sequences, int str) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makePhase__SWIG_14(swigCPtr, this, sequences, str);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeDecisionBuilderFromAssignment(Assignment assignment, DecisionBuilder db, IntVar[] vars) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeDecisionBuilderFromAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment, DecisionBuilder.getCPtr(db), db, vars);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder MakeConstraintAdder(Constraint ct) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeConstraintAdder(swigCPtr, this, Constraint.getCPtr(ct), ct);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeSolveOnce(DecisionBuilder db) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSolveOnce__SWIG_0(swigCPtr, this, DecisionBuilder.getCPtr(db), db);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeSolveOnce(DecisionBuilder db, SearchMonitor monitor1) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSolveOnce__SWIG_1(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(monitor1), monitor1);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeSolveOnce(DecisionBuilder db, SearchMonitor monitor1, SearchMonitor monitor2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSolveOnce__SWIG_2(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(monitor1), monitor1, SearchMonitor.getCPtr(monitor2), monitor2);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeSolveOnce(DecisionBuilder db, SearchMonitor monitor1, SearchMonitor monitor2, SearchMonitor monitor3) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSolveOnce__SWIG_3(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(monitor1), monitor1, SearchMonitor.getCPtr(monitor2), monitor2, SearchMonitor.getCPtr(monitor3), monitor3);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeSolveOnce(DecisionBuilder db, SearchMonitor monitor1, SearchMonitor monitor2, SearchMonitor monitor3, SearchMonitor monitor4) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSolveOnce__SWIG_4(swigCPtr, this, DecisionBuilder.getCPtr(db), db, SearchMonitor.getCPtr(monitor1), monitor1, SearchMonitor.getCPtr(monitor2), monitor2, SearchMonitor.getCPtr(monitor3), monitor3, SearchMonitor.getCPtr(monitor4), monitor4);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeSolveOnce(DecisionBuilder db, SearchMonitor[] monitors) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeSolveOnce__SWIG_5(swigCPtr, this, DecisionBuilder.getCPtr(db), db, monitors);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder MakeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNestedOptimize__SWIG_0(swigCPtr, this, DecisionBuilder.getCPtr(db), db, Assignment.getCPtr(solution), solution, maximize, step);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder MakeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step, SearchMonitor monitor1) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNestedOptimize__SWIG_1(swigCPtr, this, DecisionBuilder.getCPtr(db), db, Assignment.getCPtr(solution), solution, maximize, step, SearchMonitor.getCPtr(monitor1), monitor1);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder MakeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step, SearchMonitor monitor1, SearchMonitor monitor2) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNestedOptimize__SWIG_2(swigCPtr, this, DecisionBuilder.getCPtr(db), db, Assignment.getCPtr(solution), solution, maximize, step, SearchMonitor.getCPtr(monitor1), monitor1, SearchMonitor.getCPtr(monitor2), monitor2);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder MakeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step, SearchMonitor monitor1, SearchMonitor monitor2, SearchMonitor monitor3) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNestedOptimize__SWIG_3(swigCPtr, this, DecisionBuilder.getCPtr(db), db, Assignment.getCPtr(solution), solution, maximize, step, SearchMonitor.getCPtr(monitor1), monitor1, SearchMonitor.getCPtr(monitor2), monitor2, SearchMonitor.getCPtr(monitor3), monitor3);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder MakeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step, SearchMonitor monitor1, SearchMonitor monitor2, SearchMonitor monitor3, SearchMonitor monitor4) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNestedOptimize__SWIG_4(swigCPtr, this, DecisionBuilder.getCPtr(db), db, Assignment.getCPtr(solution), solution, maximize, step, SearchMonitor.getCPtr(monitor1), monitor1, SearchMonitor.getCPtr(monitor2), monitor2, SearchMonitor.getCPtr(monitor3), monitor3, SearchMonitor.getCPtr(monitor4), monitor4);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder MakeNestedOptimize(DecisionBuilder db, Assignment solution, boolean maximize, long step, SearchMonitor[] monitors) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeNestedOptimize__SWIG_5(swigCPtr, this, DecisionBuilder.getCPtr(db), db, Assignment.getCPtr(solution), solution, maximize, step, monitors);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeRestoreAssignment(Assignment assignment) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeRestoreAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeStoreAssignment(Assignment assignment) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeStoreAssignment(swigCPtr, this, Assignment.getCPtr(assignment), assignment);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public LocalSearchOperator makeOperator(IntVar[] vars, int op) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeOperator__SWIG_0(swigCPtr, this, vars, op);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator makeOperator(IntVar[] vars, IntVar[] secondary_vars, int op) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeOperator__SWIG_1(swigCPtr, this, vars, secondary_vars, op);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator makeOperator(IntVar[] vars, LongLongLongToLong evaluator, int op) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeOperator__SWIG_2(swigCPtr, this, vars, evaluator, op);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator makeOperator(IntVar[] vars, IntVar[] secondary_vars, LongLongLongToLong evaluator, int op) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeOperator__SWIG_3(swigCPtr, this, vars, secondary_vars, evaluator, op);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator makeRandomLnsOperator(IntVar[] vars, int number_of_variables) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeRandomLnsOperator__SWIG_0(swigCPtr, this, vars, number_of_variables);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator makeRandomLnsOperator(IntVar[] vars, int number_of_variables, int seed) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeRandomLnsOperator__SWIG_1(swigCPtr, this, vars, number_of_variables, seed);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator MakeMoveTowardTargetOperator(Assignment target) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeMoveTowardTargetOperator__SWIG_0(swigCPtr, this, Assignment.getCPtr(target), target);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator MakeMoveTowardTargetOperator(IntVar[] variables, long[] target_values) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeMoveTowardTargetOperator__SWIG_1(swigCPtr, this, variables, target_values);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator concatenateOperators(LocalSearchOperator[] ops) {
    long cPtr = operations_research_constraint_solverJNI.Solver_concatenateOperators__SWIG_0(swigCPtr, this, ops);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator concatenateOperators(LocalSearchOperator[] ops, boolean restart) {
    long cPtr = operations_research_constraint_solverJNI.Solver_concatenateOperators__SWIG_1(swigCPtr, this, ops, restart);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator concatenateOperators(LocalSearchOperator[] ops, IntIntToLong evaluator) {
    long cPtr = operations_research_constraint_solverJNI.Solver_concatenateOperators__SWIG_2(swigCPtr, this, ops, evaluator);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator randomConcatenateOperators(LocalSearchOperator[] ops) {
    long cPtr = operations_research_constraint_solverJNI.Solver_randomConcatenateOperators__SWIG_0(swigCPtr, this, ops);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator randomConcatenateOperators(LocalSearchOperator[] ops, int seed) {
    long cPtr = operations_research_constraint_solverJNI.Solver_randomConcatenateOperators__SWIG_1(swigCPtr, this, ops, seed);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public LocalSearchOperator makeNeighborhoodLimit(LocalSearchOperator op, long limit) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeNeighborhoodLimit(swigCPtr, this, LocalSearchOperator.getCPtr(op), op, limit);
    return (cPtr == 0) ? null : new LocalSearchOperator(cPtr, false);
  }

  public DecisionBuilder makeLocalSearchPhase(Assignment assignment, LocalSearchPhaseParameters parameters) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchPhase__SWIG_0(swigCPtr, this, Assignment.getCPtr(assignment), assignment, LocalSearchPhaseParameters.getCPtr(parameters), parameters);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeLocalSearchPhase(IntVar[] vars, DecisionBuilder first_solution, LocalSearchPhaseParameters parameters) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchPhase__SWIG_1(swigCPtr, this, vars, DecisionBuilder.getCPtr(first_solution), first_solution, LocalSearchPhaseParameters.getCPtr(parameters), parameters);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public DecisionBuilder makeLocalSearchPhase(SequenceVar[] vars, DecisionBuilder first_solution, LocalSearchPhaseParameters parameters) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchPhase__SWIG_2(swigCPtr, this, vars, DecisionBuilder.getCPtr(first_solution), first_solution, LocalSearchPhaseParameters.getCPtr(parameters), parameters);
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public SolutionPool MakeDefaultSolutionPool() {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeDefaultSolutionPool(swigCPtr, this);
    return (cPtr == 0) ? null : new SolutionPool(cPtr, false);
  }

  public LocalSearchPhaseParameters makeLocalSearchPhaseParameters(LocalSearchOperator ls_operator, DecisionBuilder sub_decision_builder) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchPhaseParameters__SWIG_0(swigCPtr, this, LocalSearchOperator.getCPtr(ls_operator), ls_operator, DecisionBuilder.getCPtr(sub_decision_builder), sub_decision_builder);
    return (cPtr == 0) ? null : new LocalSearchPhaseParameters(cPtr, false);
  }

  public LocalSearchPhaseParameters makeLocalSearchPhaseParameters(LocalSearchOperator ls_operator, DecisionBuilder sub_decision_builder, SearchLimit limit) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchPhaseParameters__SWIG_1(swigCPtr, this, LocalSearchOperator.getCPtr(ls_operator), ls_operator, DecisionBuilder.getCPtr(sub_decision_builder), sub_decision_builder, SearchLimit.getCPtr(limit), limit);
    return (cPtr == 0) ? null : new LocalSearchPhaseParameters(cPtr, false);
  }

  public LocalSearchPhaseParameters makeLocalSearchPhaseParameters(LocalSearchOperator ls_operator, DecisionBuilder sub_decision_builder, SearchLimit limit, LocalSearchFilter[] filters) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchPhaseParameters__SWIG_2(swigCPtr, this, LocalSearchOperator.getCPtr(ls_operator), ls_operator, DecisionBuilder.getCPtr(sub_decision_builder), sub_decision_builder, SearchLimit.getCPtr(limit), limit, filters);
    return (cPtr == 0) ? null : new LocalSearchPhaseParameters(cPtr, false);
  }

  public LocalSearchPhaseParameters makeLocalSearchPhaseParameters(SolutionPool pool, LocalSearchOperator ls_operator, DecisionBuilder sub_decision_builder) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchPhaseParameters__SWIG_3(swigCPtr, this, SolutionPool.getCPtr(pool), pool, LocalSearchOperator.getCPtr(ls_operator), ls_operator, DecisionBuilder.getCPtr(sub_decision_builder), sub_decision_builder);
    return (cPtr == 0) ? null : new LocalSearchPhaseParameters(cPtr, false);
  }

  public LocalSearchPhaseParameters makeLocalSearchPhaseParameters(SolutionPool pool, LocalSearchOperator ls_operator, DecisionBuilder sub_decision_builder, SearchLimit limit) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchPhaseParameters__SWIG_4(swigCPtr, this, SolutionPool.getCPtr(pool), pool, LocalSearchOperator.getCPtr(ls_operator), ls_operator, DecisionBuilder.getCPtr(sub_decision_builder), sub_decision_builder, SearchLimit.getCPtr(limit), limit);
    return (cPtr == 0) ? null : new LocalSearchPhaseParameters(cPtr, false);
  }

  public LocalSearchPhaseParameters makeLocalSearchPhaseParameters(SolutionPool pool, LocalSearchOperator ls_operator, DecisionBuilder sub_decision_builder, SearchLimit limit, LocalSearchFilter[] filters) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchPhaseParameters__SWIG_5(swigCPtr, this, SolutionPool.getCPtr(pool), pool, LocalSearchOperator.getCPtr(ls_operator), ls_operator, DecisionBuilder.getCPtr(sub_decision_builder), sub_decision_builder, SearchLimit.getCPtr(limit), limit, filters);
    return (cPtr == 0) ? null : new LocalSearchPhaseParameters(cPtr, false);
  }

  public LocalSearchFilter MakeVariableDomainFilter() {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeVariableDomainFilter(swigCPtr, this);
    return (cPtr == 0) ? null : new LocalSearchFilter(cPtr, false);
  }

  public IntVarLocalSearchFilter makeLocalSearchObjectiveFilter(IntVar[] vars, LongLongToLong values, IntVar objective, int filter_enum, int op_enum) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchObjectiveFilter__SWIG_0(swigCPtr, this, vars, values, IntVar.getCPtr(objective), objective, filter_enum, op_enum);
    return (cPtr == 0) ? null : new IntVarLocalSearchFilter(cPtr, false);
  }

  public IntVarLocalSearchFilter makeLocalSearchObjectiveFilter(IntVar[] vars, LongLongToLong values, LongToVoid delta_objective_callback, IntVar objective, int filter_enum, int op_enum) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchObjectiveFilter__SWIG_1(swigCPtr, this, vars, values, delta_objective_callback, IntVar.getCPtr(objective), objective, filter_enum, op_enum);
    return (cPtr == 0) ? null : new IntVarLocalSearchFilter(cPtr, false);
  }

  public IntVarLocalSearchFilter makeLocalSearchObjectiveFilter(IntVar[] vars, IntVar[] secondary_vars, LongLongLongToLong values, IntVar objective, int filter_enum, int op_enum) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchObjectiveFilter__SWIG_2(swigCPtr, this, vars, secondary_vars, values, IntVar.getCPtr(objective), objective, filter_enum, op_enum);
    return (cPtr == 0) ? null : new IntVarLocalSearchFilter(cPtr, false);
  }

  public IntVarLocalSearchFilter makeLocalSearchObjectiveFilter(IntVar[] vars, IntVar[] secondary_vars, LongLongLongToLong values, LongToVoid delta_objective_callback, IntVar objective, int filter_enum, int op_enum) {
    long cPtr = operations_research_constraint_solverJNI.Solver_makeLocalSearchObjectiveFilter__SWIG_3(swigCPtr, this, vars, secondary_vars, values, delta_objective_callback, IntVar.getCPtr(objective), objective, filter_enum, op_enum);
    return (cPtr == 0) ? null : new IntVarLocalSearchFilter(cPtr, false);
  }

  public void TopPeriodicCheck() {
    operations_research_constraint_solverJNI.Solver_TopPeriodicCheck(swigCPtr, this);
  }

  public int TopProgressPercent() {
    return operations_research_constraint_solverJNI.Solver_TopProgressPercent(swigCPtr, this);
  }

  public void PushState() {
    operations_research_constraint_solverJNI.Solver_PushState(swigCPtr, this);
  }

  public void PopState() {
    operations_research_constraint_solverJNI.Solver_PopState(swigCPtr, this);
  }

  public int searchDepth() {
    return operations_research_constraint_solverJNI.Solver_searchDepth(swigCPtr, this);
  }

  public int searchLeftDepth() {
    return operations_research_constraint_solverJNI.Solver_searchLeftDepth(swigCPtr, this);
  }

  public int solveDepth() {
    return operations_research_constraint_solverJNI.Solver_solveDepth(swigCPtr, this);
  }

  public void SetBranchSelector(SWIGTYPE_p_std__functionT_operations_research__Solver__DecisionModification_fF_t bs) {
    operations_research_constraint_solverJNI.Solver_SetBranchSelector(swigCPtr, this, SWIGTYPE_p_std__functionT_operations_research__Solver__DecisionModification_fF_t.getCPtr(bs));
  }

  public DecisionBuilder MakeApplyBranchSelector(SWIGTYPE_p_std__functionT_operations_research__Solver__DecisionModification_fF_t bs) {
    long cPtr = operations_research_constraint_solverJNI.Solver_MakeApplyBranchSelector(swigCPtr, this, SWIGTYPE_p_std__functionT_operations_research__Solver__DecisionModification_fF_t.getCPtr(bs));
    return (cPtr == 0) ? null : new DecisionBuilder(cPtr, false);
  }

  public long rand64(long size) {
    return operations_research_constraint_solverJNI.Solver_rand64(swigCPtr, this, size);
  }

  public int rand32(int size) {
    return operations_research_constraint_solverJNI.Solver_rand32(swigCPtr, this, size);
  }

  public void reSeed(int seed) {
    operations_research_constraint_solverJNI.Solver_reSeed(swigCPtr, this, seed);
  }

  public void exportProfilingOverview(String filename) {
    operations_research_constraint_solverJNI.Solver_exportProfilingOverview(swigCPtr, this, filename);
  }

  public String LocalSearchProfile() {
    return operations_research_constraint_solverJNI.Solver_LocalSearchProfile(swigCPtr, this);
  }

  public boolean CurrentlyInSolve() {
    return operations_research_constraint_solverJNI.Solver_CurrentlyInSolve(swigCPtr, this);
  }

  public int constraints() {
    return operations_research_constraint_solverJNI.Solver_constraints(swigCPtr, this);
  }

  public void accept(ModelVisitor visitor) {
    operations_research_constraint_solverJNI.Solver_accept__SWIG_0(swigCPtr, this, ModelVisitor.getCPtr(visitor), visitor);
  }

  public void accept(ModelVisitor visitor, SearchMonitor[] monitors) {
    operations_research_constraint_solverJNI.Solver_accept__SWIG_1(swigCPtr, this, ModelVisitor.getCPtr(visitor), visitor, monitors);
  }

  public void accept(ModelVisitor visitor, SearchMonitor[] monitors, DecisionBuilder db) {
    operations_research_constraint_solverJNI.Solver_accept__SWIG_2(swigCPtr, this, ModelVisitor.getCPtr(visitor), visitor, monitors, DecisionBuilder.getCPtr(db), db);
  }

  public Decision balancing_decision() {
    long cPtr = operations_research_constraint_solverJNI.Solver_balancing_decision(swigCPtr, this);
    return (cPtr == 0) ? null : new Decision(cPtr, false);
  }

  public void clear_fail_intercept() {
    operations_research_constraint_solverJNI.Solver_clear_fail_intercept(swigCPtr, this);
  }

  public SWIGTYPE_p_operations_research__DemonProfiler demon_profiler() {
    long cPtr = operations_research_constraint_solverJNI.Solver_demon_profiler(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_operations_research__DemonProfiler(cPtr, false);
  }

  public boolean HasName(PropagationBaseObject object) {
    return operations_research_constraint_solverJNI.Solver_HasName(swigCPtr, this, PropagationBaseObject.getCPtr(object), object);
  }

  public Demon RegisterDemon(Demon demon) {
    long cPtr = operations_research_constraint_solverJNI.Solver_RegisterDemon(swigCPtr, this, Demon.getCPtr(demon), demon);
    return (cPtr == 0) ? null : new Demon(cPtr, false);
  }

  public IntExpr RegisterIntExpr(IntExpr expr) {
    long cPtr = operations_research_constraint_solverJNI.Solver_RegisterIntExpr(swigCPtr, this, IntExpr.getCPtr(expr), expr);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public IntVar RegisterIntVar(IntVar var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_RegisterIntVar(swigCPtr, this, IntVar.getCPtr(var), var);
    return (cPtr == 0) ? null : new IntVar(cPtr, false);
  }

  public IntervalVar RegisterIntervalVar(IntervalVar var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_RegisterIntervalVar(swigCPtr, this, IntervalVar.getCPtr(var), var);
    return (cPtr == 0) ? null : new IntervalVar(cPtr, false);
  }

  public SWIGTYPE_p_operations_research__Search ActiveSearch() {
    long cPtr = operations_research_constraint_solverJNI.Solver_ActiveSearch(swigCPtr, this);
    return (cPtr == 0) ? null : new SWIGTYPE_p_operations_research__Search(cPtr, false);
  }

  public ModelCache Cache() {
    long cPtr = operations_research_constraint_solverJNI.Solver_Cache(swigCPtr, this);
    return (cPtr == 0) ? null : new ModelCache(cPtr, false);
  }

  public boolean InstrumentsDemons() {
    return operations_research_constraint_solverJNI.Solver_InstrumentsDemons(swigCPtr, this);
  }

  public boolean IsProfilingEnabled() {
    return operations_research_constraint_solverJNI.Solver_IsProfilingEnabled(swigCPtr, this);
  }

  public boolean IsLocalSearchProfilingEnabled() {
    return operations_research_constraint_solverJNI.Solver_IsLocalSearchProfilingEnabled(swigCPtr, this);
  }

  public boolean InstrumentsVariables() {
    return operations_research_constraint_solverJNI.Solver_InstrumentsVariables(swigCPtr, this);
  }

  public boolean NameAllVariables() {
    return operations_research_constraint_solverJNI.Solver_NameAllVariables(swigCPtr, this);
  }

  public String model_name() {
    return operations_research_constraint_solverJNI.Solver_model_name(swigCPtr, this);
  }

  public PropagationMonitor GetPropagationMonitor() {
    long cPtr = operations_research_constraint_solverJNI.Solver_GetPropagationMonitor(swigCPtr, this);
    return (cPtr == 0) ? null : new PropagationMonitor(cPtr, false);
  }

  public void AddPropagationMonitor(PropagationMonitor monitor) {
    operations_research_constraint_solverJNI.Solver_AddPropagationMonitor(swigCPtr, this, PropagationMonitor.getCPtr(monitor), monitor);
  }

  public LocalSearchMonitor GetLocalSearchMonitor() {
    long cPtr = operations_research_constraint_solverJNI.Solver_GetLocalSearchMonitor(swigCPtr, this);
    return (cPtr == 0) ? null : new LocalSearchMonitor(cPtr, false);
  }

  public void AddLocalSearchMonitor(LocalSearchMonitor monitor) {
    operations_research_constraint_solverJNI.Solver_AddLocalSearchMonitor(swigCPtr, this, LocalSearchMonitor.getCPtr(monitor), monitor);
  }

  public void setTmp_vector_(long[] value) {
    operations_research_constraint_solverJNI.Solver_tmp_vector__set(swigCPtr, this, value);
  }

  public long[] getTmp_vector_() {
  return operations_research_constraint_solverJNI.Solver_tmp_vector__get(swigCPtr, this);
}

  public IntExpr CastExpression(IntVar var) {
    long cPtr = operations_research_constraint_solverJNI.Solver_CastExpression(swigCPtr, this, IntVar.getCPtr(var), var);
    return (cPtr == 0) ? null : new IntExpr(cPtr, false);
  }

  public void FinishCurrentSearch() {
    operations_research_constraint_solverJNI.Solver_FinishCurrentSearch(swigCPtr, this);
  }

  public void RestartCurrentSearch() {
    operations_research_constraint_solverJNI.Solver_RestartCurrentSearch(swigCPtr, this);
  }

  public void ShouldFail() {
    operations_research_constraint_solverJNI.Solver_ShouldFail(swigCPtr, this);
  }

  public void CheckFail() {
    operations_research_constraint_solverJNI.Solver_CheckFail(swigCPtr, this);
  }

  public final static int kNumPriorities = operations_research_constraint_solverJNI.Solver_kNumPriorities_get();
  // IntVarStrategy 
  public final static int INT_VAR_DEFAULT = operations_research_constraint_solverJNI.Solver_INT_VAR_DEFAULT_get();
  public final static int INT_VAR_SIMPLE = operations_research_constraint_solverJNI.Solver_INT_VAR_SIMPLE_get();
  public final static int CHOOSE_FIRST_UNBOUND = operations_research_constraint_solverJNI.Solver_CHOOSE_FIRST_UNBOUND_get();
  public final static int CHOOSE_RANDOM = operations_research_constraint_solverJNI.Solver_CHOOSE_RANDOM_get();
  public final static int CHOOSE_MIN_SIZE_LOWEST_MIN = operations_research_constraint_solverJNI.Solver_CHOOSE_MIN_SIZE_LOWEST_MIN_get();
  public final static int CHOOSE_MIN_SIZE_HIGHEST_MIN = operations_research_constraint_solverJNI.Solver_CHOOSE_MIN_SIZE_HIGHEST_MIN_get();
  public final static int CHOOSE_MIN_SIZE_LOWEST_MAX = operations_research_constraint_solverJNI.Solver_CHOOSE_MIN_SIZE_LOWEST_MAX_get();
  public final static int CHOOSE_MIN_SIZE_HIGHEST_MAX = operations_research_constraint_solverJNI.Solver_CHOOSE_MIN_SIZE_HIGHEST_MAX_get();
  public final static int CHOOSE_LOWEST_MIN = operations_research_constraint_solverJNI.Solver_CHOOSE_LOWEST_MIN_get();
  public final static int CHOOSE_HIGHEST_MAX = operations_research_constraint_solverJNI.Solver_CHOOSE_HIGHEST_MAX_get();
  public final static int CHOOSE_MIN_SIZE = operations_research_constraint_solverJNI.Solver_CHOOSE_MIN_SIZE_get();
  public final static int CHOOSE_MAX_SIZE = operations_research_constraint_solverJNI.Solver_CHOOSE_MAX_SIZE_get();
  public final static int CHOOSE_MAX_REGRET_ON_MIN = operations_research_constraint_solverJNI.Solver_CHOOSE_MAX_REGRET_ON_MIN_get();
  public final static int CHOOSE_PATH = operations_research_constraint_solverJNI.Solver_CHOOSE_PATH_get();

  // IntValueStrategy 
  public final static int INT_VALUE_DEFAULT = operations_research_constraint_solverJNI.Solver_INT_VALUE_DEFAULT_get();
  public final static int INT_VALUE_SIMPLE = operations_research_constraint_solverJNI.Solver_INT_VALUE_SIMPLE_get();
  public final static int ASSIGN_MIN_VALUE = operations_research_constraint_solverJNI.Solver_ASSIGN_MIN_VALUE_get();
  public final static int ASSIGN_MAX_VALUE = operations_research_constraint_solverJNI.Solver_ASSIGN_MAX_VALUE_get();
  public final static int ASSIGN_RANDOM_VALUE = operations_research_constraint_solverJNI.Solver_ASSIGN_RANDOM_VALUE_get();
  public final static int ASSIGN_CENTER_VALUE = operations_research_constraint_solverJNI.Solver_ASSIGN_CENTER_VALUE_get();
  public final static int SPLIT_LOWER_HALF = operations_research_constraint_solverJNI.Solver_SPLIT_LOWER_HALF_get();
  public final static int SPLIT_UPPER_HALF = operations_research_constraint_solverJNI.Solver_SPLIT_UPPER_HALF_get();

  // EvaluatorStrategy 
  public final static int CHOOSE_STATIC_GLOBAL_BEST = operations_research_constraint_solverJNI.Solver_CHOOSE_STATIC_GLOBAL_BEST_get();
  public final static int CHOOSE_DYNAMIC_GLOBAL_BEST = operations_research_constraint_solverJNI.Solver_CHOOSE_DYNAMIC_GLOBAL_BEST_get();

  // SequenceStrategy 
  public final static int SEQUENCE_DEFAULT = operations_research_constraint_solverJNI.Solver_SEQUENCE_DEFAULT_get();
  public final static int SEQUENCE_SIMPLE = operations_research_constraint_solverJNI.Solver_SEQUENCE_SIMPLE_get();
  public final static int CHOOSE_MIN_SLACK_RANK_FORWARD = operations_research_constraint_solverJNI.Solver_CHOOSE_MIN_SLACK_RANK_FORWARD_get();
  public final static int CHOOSE_RANDOM_RANK_FORWARD = operations_research_constraint_solverJNI.Solver_CHOOSE_RANDOM_RANK_FORWARD_get();

  // IntervalStrategy 
  public final static int INTERVAL_DEFAULT = operations_research_constraint_solverJNI.Solver_INTERVAL_DEFAULT_get();
  public final static int INTERVAL_SIMPLE = operations_research_constraint_solverJNI.Solver_INTERVAL_SIMPLE_get();
  public final static int INTERVAL_SET_TIMES_FORWARD = operations_research_constraint_solverJNI.Solver_INTERVAL_SET_TIMES_FORWARD_get();
  public final static int INTERVAL_SET_TIMES_BACKWARD = operations_research_constraint_solverJNI.Solver_INTERVAL_SET_TIMES_BACKWARD_get();

  // LocalSearchOperators 
  public final static int TWOOPT = operations_research_constraint_solverJNI.Solver_TWOOPT_get();
  public final static int OROPT = operations_research_constraint_solverJNI.Solver_OROPT_get();
  public final static int RELOCATE = operations_research_constraint_solverJNI.Solver_RELOCATE_get();
  public final static int EXCHANGE = operations_research_constraint_solverJNI.Solver_EXCHANGE_get();
  public final static int CROSS = operations_research_constraint_solverJNI.Solver_CROSS_get();
  public final static int MAKEACTIVE = operations_research_constraint_solverJNI.Solver_MAKEACTIVE_get();
  public final static int MAKEINACTIVE = operations_research_constraint_solverJNI.Solver_MAKEINACTIVE_get();
  public final static int MAKECHAININACTIVE = operations_research_constraint_solverJNI.Solver_MAKECHAININACTIVE_get();
  public final static int SWAPACTIVE = operations_research_constraint_solverJNI.Solver_SWAPACTIVE_get();
  public final static int EXTENDEDSWAPACTIVE = operations_research_constraint_solverJNI.Solver_EXTENDEDSWAPACTIVE_get();
  public final static int PATHLNS = operations_research_constraint_solverJNI.Solver_PATHLNS_get();
  public final static int FULLPATHLNS = operations_research_constraint_solverJNI.Solver_FULLPATHLNS_get();
  public final static int UNACTIVELNS = operations_research_constraint_solverJNI.Solver_UNACTIVELNS_get();
  public final static int INCREMENT = operations_research_constraint_solverJNI.Solver_INCREMENT_get();
  public final static int DECREMENT = operations_research_constraint_solverJNI.Solver_DECREMENT_get();
  public final static int SIMPLELNS = operations_research_constraint_solverJNI.Solver_SIMPLELNS_get();

  // EvaluatorLocalSearchOperators 
  public final static int LK = operations_research_constraint_solverJNI.Solver_LK_get();
  public final static int TSPOPT = operations_research_constraint_solverJNI.Solver_TSPOPT_get();
  public final static int TSPLNS = operations_research_constraint_solverJNI.Solver_TSPLNS_get();

  // LocalSearchFilterBound 
  public final static int GE = operations_research_constraint_solverJNI.Solver_GE_get();
  public final static int LE = operations_research_constraint_solverJNI.Solver_LE_get();
  public final static int EQ = operations_research_constraint_solverJNI.Solver_EQ_get();

  // LocalSearchOperation 
  public final static int SUM = operations_research_constraint_solverJNI.Solver_SUM_get();
  public final static int PROD = operations_research_constraint_solverJNI.Solver_PROD_get();
  public final static int MAX = operations_research_constraint_solverJNI.Solver_MAX_get();
  public final static int MIN = operations_research_constraint_solverJNI.Solver_MIN_get();

  // DemonPriority 
  public final static int DELAYED_PRIORITY = operations_research_constraint_solverJNI.Solver_DELAYED_PRIORITY_get();
  public final static int VAR_PRIORITY = operations_research_constraint_solverJNI.Solver_VAR_PRIORITY_get();
  public final static int NORMAL_PRIORITY = operations_research_constraint_solverJNI.Solver_NORMAL_PRIORITY_get();

  // BinaryIntervalRelation 
  public final static int ENDS_AFTER_END = operations_research_constraint_solverJNI.Solver_ENDS_AFTER_END_get();
  public final static int ENDS_AFTER_START = operations_research_constraint_solverJNI.Solver_ENDS_AFTER_START_get();
  public final static int ENDS_AT_END = operations_research_constraint_solverJNI.Solver_ENDS_AT_END_get();
  public final static int ENDS_AT_START = operations_research_constraint_solverJNI.Solver_ENDS_AT_START_get();
  public final static int STARTS_AFTER_END = operations_research_constraint_solverJNI.Solver_STARTS_AFTER_END_get();
  public final static int STARTS_AFTER_START = operations_research_constraint_solverJNI.Solver_STARTS_AFTER_START_get();
  public final static int STARTS_AT_END = operations_research_constraint_solverJNI.Solver_STARTS_AT_END_get();
  public final static int STARTS_AT_START = operations_research_constraint_solverJNI.Solver_STARTS_AT_START_get();
  public final static int STAYS_IN_SYNC = operations_research_constraint_solverJNI.Solver_STAYS_IN_SYNC_get();

  // UnaryIntervalRelation 
  public final static int ENDS_AFTER = operations_research_constraint_solverJNI.Solver_ENDS_AFTER_get();
  public final static int ENDS_AT = operations_research_constraint_solverJNI.Solver_ENDS_AT_get();
  public final static int ENDS_BEFORE = operations_research_constraint_solverJNI.Solver_ENDS_BEFORE_get();
  public final static int STARTS_AFTER = operations_research_constraint_solverJNI.Solver_STARTS_AFTER_get();
  public final static int STARTS_AT = operations_research_constraint_solverJNI.Solver_STARTS_AT_get();
  public final static int STARTS_BEFORE = operations_research_constraint_solverJNI.Solver_STARTS_BEFORE_get();
  public final static int CROSS_DATE = operations_research_constraint_solverJNI.Solver_CROSS_DATE_get();
  public final static int AVOID_DATE = operations_research_constraint_solverJNI.Solver_AVOID_DATE_get();

  // DecisionModification 
  public final static int NO_CHANGE = operations_research_constraint_solverJNI.Solver_NO_CHANGE_get();
  public final static int KEEP_LEFT = operations_research_constraint_solverJNI.Solver_KEEP_LEFT_get();
  public final static int KEEP_RIGHT = operations_research_constraint_solverJNI.Solver_KEEP_RIGHT_get();
  public final static int KILL_BOTH = operations_research_constraint_solverJNI.Solver_KILL_BOTH_get();
  public final static int SWITCH_BRANCHES = operations_research_constraint_solverJNI.Solver_SWITCH_BRANCHES_get();

  // MarkerType 
  public final static int SENTINEL = operations_research_constraint_solverJNI.Solver_SENTINEL_get();
  public final static int SIMPLE_MARKER = operations_research_constraint_solverJNI.Solver_SIMPLE_MARKER_get();
  public final static int CHOICE_POINT = operations_research_constraint_solverJNI.Solver_CHOICE_POINT_get();
  public final static int REVERSIBLE_ACTION = operations_research_constraint_solverJNI.Solver_REVERSIBLE_ACTION_get();

  // SolverState 
  public final static int OUTSIDE_SEARCH = operations_research_constraint_solverJNI.Solver_OUTSIDE_SEARCH_get();
  public final static int IN_ROOT_NODE = operations_research_constraint_solverJNI.Solver_IN_ROOT_NODE_get();
  public final static int IN_SEARCH = operations_research_constraint_solverJNI.Solver_IN_SEARCH_get();
  public final static int AT_SOLUTION = operations_research_constraint_solverJNI.Solver_AT_SOLUTION_get();
  public final static int NO_MORE_SOLUTIONS = operations_research_constraint_solverJNI.Solver_NO_MORE_SOLUTIONS_get();
  public final static int PROBLEM_INFEASIBLE = operations_research_constraint_solverJNI.Solver_PROBLEM_INFEASIBLE_get();

}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy