public Syntax internalDeepCopy(Token start, Token end) {
    Syntax copy =
        new DotMethodCallExp(
            start,
            end,
            (methodName == null ? null : (Id) methodName.internalDeepCopy(start, end)),
            (subpat == null ? null : (Cmd) subpat.internalDeepCopy(start, end)));

    return copy;
  }
  public Syntax internalDeepCopy(Token start, Token end) {
    Syntax copy =
        new ClsPatDef(
            start,
            end,
            (id == null ? null : (Id) id.internalDeepCopy(start, end)),
            (List<Id>) (deepCopyList(formals, start, end)),
            (body == null ? null : (Cmd) body.internalDeepCopy(start, end)));

    return copy;
  }
 public String details() {
   return "<~" + id.toString() + "~>";
 }
 public String toString() {
   return id.toString();
 }
  public Syntax internalDeepCopy(Token start, Token end) {
    Syntax copy =
        new PatVar(start, end, (id == null ? null : (Id) id.internalDeepCopy(start, end)));

    return copy;
  }