// Path: src/main/java/gov/nasa/jpf/constraints/expressions/Constant.java
// public class Constant<E> extends AbstractExpression<E> {
//   
//   public static <E> Constant<E> create(Type<E> type, E value) {
//     return new Constant<E>(type, value);
//   }
//   
//   public static <E> Constant<E> createParsed(Type<E> type, String txt) {
//     return new Constant<E>(type, type.parse(txt));
//   }
//   
//   public static <E> Constant<E> createCasted(Type<E> type, Object value) {
//     return new Constant<E>(type, type.cast(value));
//   }
// 
//   private final Type<E> type;
//   private final E value;
//   
//   public Constant(Type<E> type, E value) {
//     this.type = type;
//     this.value = value;
//   }  
// 
// 
//   @Override
//   public E evaluate(Valuation values) {
//     return this.value;
//   }
// 
// 
//   @Override
//   public void collectFreeVariables(Collection<? super Variable<?>> variables) {
//     // do nothing
//   }
// 
//   @Override
//   public boolean equals(Object obj) {
//     if (obj == null) {
//       return false;
//     }
//     if (getClass() != obj.getClass()) {
//       return false;
//     }
//     final Constant<?> other = (Constant<?>) obj;
//     if (this.type != other.type && (this.type == null || !this.type.equals(other.type))) {
//       return false;
//     }
//     if ((this.value == null) ? (other.value != null) : !this.value.equals(other.value)) {
//       return false;
//     }
//     return true;
//   }
// 
//   @Override
//   public int hashCode() {
//     int hash = 7;
//     hash = 47 * hash + (this.type != null ? this.type.hashCode() : 0);
//     hash = 47 * hash + (this.value != null ? this.value.hashCode() : 0);
//     return hash;
//   }
//   
//   
//   @Override
//   public Type<E> getType() {
//     return this.type;
//   }    
// 
//   public E getValue() {
//     return this.value;
//   }
// 
// 
//   @Override
//   public Expression<?>[] getChildren() {
//     return NO_CHILDREN;
//   }
// 
// 
//   @Override
//   public Expression<E> duplicate(Expression<?>[] newChildren) {
//     assert newChildren.length == 0;
//     return this;
//   }
// 
// 
//   @Override
//   public void print(Appendable a, int flags) throws IOException {
//     a.append(String.valueOf(value));
//   }
// 
//   @Override
//   public void printMalformedExpression(Appendable a, int flags) 
//           throws IOException {
//     if(value == null){
//       a.append("null");
//     } else {
//       a.append(String.valueOf(value));
//     }
//   }
//   @Override
//   public <R, D> R accept(ExpressionVisitor<R, D> visitor, D data) {
//     return visitor.visit(this, data);
//   }
// 
//   
//   // LEGACY API
//   
//   @Deprecated
//   public Constant(Class<E> clazz, E value) {
//     this(ObjectConstraints.getPrimitiveType(clazz), value);
//   }
// }


import gov.nasa.jpf.constraints.expressions.Constant;
import java.util.Map;
  public static <E> ValuationEntry<E> create(Variable<E> variable, E value) {
    return new ValuationEntry<E>(variable, value);
  }
  
  
  private final Variable<E> variable;
  private E value;
  
  public ValuationEntry(Variable<E> variable, E value) {
    this.variable = variable;
    this.value = value;
  }
  
  public Variable<E> getVariable() {
    return variable;
  }
  
  public E getValue() {
    return value;
  }
  
  public void setValue(E value) {
    this.value = value;
  }
  
  @Override
  public ValuationEntry<E> clone() {
    return new ValuationEntry<E>(variable, value);
  }

// Path: src/main/java/gov/nasa/jpf/constraints/expressions/Constant.java
// public class Constant<E> extends AbstractExpression<E> {
//   
//   public static <E> Constant<E> create(Type<E> type, E value) {
//     return new Constant<E>(type, value);
//   }
//   
//   public static <E> Constant<E> createParsed(Type<E> type, String txt) {
//     return new Constant<E>(type, type.parse(txt));
//   }
//   
//   public static <E> Constant<E> createCasted(Type<E> type, Object value) {
//     return new Constant<E>(type, type.cast(value));
//   }
// 
//   private final Type<E> type;
//   private final E value;
//   
//   public Constant(Type<E> type, E value) {
//     this.type = type;
//     this.value = value;
//   }  
// 
// 
//   @Override
//   public E evaluate(Valuation values) {
//     return this.value;
//   }
// 
// 
//   @Override
//   public void collectFreeVariables(Collection<? super Variable<?>> variables) {
//     // do nothing
//   }
// 
//   @Override
//   public boolean equals(Object obj) {
//     if (obj == null) {
//       return false;
//     }
//     if (getClass() != obj.getClass()) {
//       return false;
//     }
//     final Constant<?> other = (Constant<?>) obj;
//     if (this.type != other.type && (this.type == null || !this.type.equals(other.type))) {
//       return false;
//     }
//     if ((this.value == null) ? (other.value != null) : !this.value.equals(other.value)) {
//       return false;
//     }
//     return true;
//   }
// 
//   @Override
//   public int hashCode() {
//     int hash = 7;
//     hash = 47 * hash + (this.type != null ? this.type.hashCode() : 0);
//     hash = 47 * hash + (this.value != null ? this.value.hashCode() : 0);
//     return hash;
//   }
//   
//   
//   @Override
//   public Type<E> getType() {
//     return this.type;
//   }    
// 
//   public E getValue() {
//     return this.value;
//   }
// 
// 
//   @Override
//   public Expression<?>[] getChildren() {
//     return NO_CHILDREN;
//   }
// 
// 
//   @Override
//   public Expression<E> duplicate(Expression<?>[] newChildren) {
//     assert newChildren.length == 0;
//     return this;
//   }
// 
// 
//   @Override
//   public void print(Appendable a, int flags) throws IOException {
//     a.append(String.valueOf(value));
//   }
// 
//   @Override
//   public void printMalformedExpression(Appendable a, int flags) 
//           throws IOException {
//     if(value == null){
//       a.append("null");
//     } else {
//       a.append(String.valueOf(value));
//     }
//   }
//   @Override
//   public <R, D> R accept(ExpressionVisitor<R, D> visitor, D data) {
//     return visitor.visit(this, data);
//   }
// 
//   
//   // LEGACY API
//   
//   @Deprecated
//   public Constant(Class<E> clazz, E value) {
//     this(ObjectConstraints.getPrimitiveType(clazz), value);
//   }
// }


// Path: src/main/java/gov/nasa/jpf/constraints/api/ValuationEntry.java
import gov.nasa.jpf.constraints.expressions.Constant;
import java.util.Map;

  public static <E> ValuationEntry<E> create(Variable<E> variable, E value) {
    return new ValuationEntry<E>(variable, value);
  }
  
  
  private final Variable<E> variable;
  private E value;
  
  public ValuationEntry(Variable<E> variable, E value) {
    this.variable = variable;
    this.value = value;
  }
  
  public Variable<E> getVariable() {
    return variable;
  }
  
  public E getValue() {
    return value;
  }
  
  public void setValue(E value) {
    this.value = value;
  }
  
  @Override
  public ValuationEntry<E> clone() {
    return new ValuationEntry<E>(variable, value);
  }

  public Constant<E> valueConstant() {