private static void checkSealsOnAllIds(Syntax syn) {
   List<Id> ids = Sealant.allIdsIn(syn);
   for (Id id : ids) {
     Seal seal = id.seal();
     if (seal == null) {
       id.flag(DangerLevel.ERROR, "Undefined identifier: " + id, "");
     }
   }
 }
  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 toString() {
   return id.toString();
 }
 public String details() {
   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;
  }