class AbstractValueBox extends AbstractHost implements ValueBox {

  protected Value value;

  @Override
  public void setValue(Value value) {<FILL_FUNCTION_BODY>}

  @Override
  public Value getValue() {
    return value;
  }

  @Override
  public void toString(UnitPrinter up) {
    up.startValueBox(this);
    value.toString(up);
    up.endValueBox(this);
  }

  @Override
  public String toString() {
    return getClass().getSimpleName() + "(" + value + ")";
  }
}

    if (value == null) {
      throw new IllegalArgumentException("value may not be null");
    }
    if (canContainValue(value)) {
      this.value = value;
    } else {
      throw new RuntimeException("Box " + this + " cannot contain value: " + value + "(" + value.getClass() + ")");
    }
  
<methods>public non-sealed void <init>() ,public void addAllTagsOf(soot.tagkit.Host) ,public void addTag(soot.tagkit.Tag) ,public int getJavaSourceStartColumnNumber() ,public int getJavaSourceStartLineNumber() ,public soot.tagkit.Tag getTag(java.lang.String) ,public List<soot.tagkit.Tag> getTags() ,public boolean hasTag(java.lang.String) ,public void removeAllTags() ,public void removeTag(java.lang.String) <variables>protected int col,protected int line,protected List<soot.tagkit.Tag> mTagList