@Override
  public ASTNode transform(org.kframework.kil.SetBuiltin node) throws TransformerException {
    assert node.isLHSView() : "unsupported set " + node;

    HashSet<Term> entries = new HashSet<Term>(node.elements().size());
    for (org.kframework.kil.Term entry : node.elements()) {
      Term key = (Term) entry.accept(this);
      entries.add(key);
    }

    if (node.hasViewBase()) {
      Term base = (Term) node.viewBase().accept(this);
      if (base instanceof SetUpdate) {
        SetUpdate setUpdate = (SetUpdate) base;
        /* TODO(AndreiS): check key uniqueness */
        return new SetUpdate(setUpdate.base(), setUpdate.removeSet());
      } else {
        /* base instanceof Variable */
        return new BuiltinSet(entries, (Variable) base);
      }
    } else {
      return new BuiltinSet(entries);
    }
  }