class Typing {

  protected HashMap<Local, Type> map;

  public Typing(Collection<Local> vs) {
    this.map = new HashMap<Local, Type>(vs.size());
  }

  public Typing(Typing tg) {
    this.map = new HashMap<Local, Type>(tg.map);
  }

  public Map<Local, Type> getMap() {
    return map;
  }

  public Type get(Local v) {
    Type t = this.map.get(v);
    return (t == null) ? BottomType.v() : t;
  }

  public Type set(Local v, Type t) {
    return (t instanceof BottomType) ? null : this.map.put(v, t);
  }

  public Collection<Local> getAllLocals() {
    return map.keySet();
  }

  @Override
  public String toString() {<FILL_FUNCTION_BODY>}
}

    StringBuilder sb = new StringBuilder();
    sb.append('{');
    for (Map.Entry<Local, Type> e : this.map.entrySet()) {
      sb.append(e.getKey());
      sb.append(':');
      sb.append(e.getValue());
      sb.append(',');
    }
    sb.append('}');
    return sb.toString();
  
<no_super_class>