public List<SynPtr> synPtrs() {
    List<SynPtr> ptrs = new ArrayList<SynPtr>();

    // 0 : id
    if (id != null) ptrs.add(new SynPtr(this, 0, -1));
    return ptrs;
  }
  public List<SynPtr> synPtrs() {
    List<SynPtr> ptrs = new ArrayList<SynPtr>();

    // 0 : args
    for (int i = 0; i < this.args.size(); i++) {
      ptrs.add(new SynPtr(this, 0, i));
    }
    return ptrs;
  }
  public List<SynPtr> synPtrs() {
    List<SynPtr> ptrs = new ArrayList<SynPtr>();

    // 0 : methodName
    if (methodName != null) ptrs.add(new SynPtr(this, 0, -1));
    // 1 : subpat
    if (subpat != null) ptrs.add(new SynPtr(this, 1, -1));
    return ptrs;
  }
  public List<SynPtr> synPtrs() {
    List<SynPtr> ptrs = new ArrayList<SynPtr>();

    // 0 : id
    if (id != null) ptrs.add(new SynPtr(this, 0, -1));
    // 1 : formals
    for (int i = 0; i < this.formals.size(); i++) {
      ptrs.add(new SynPtr(this, 1, i));
    }
    // 2 : body
    if (body != null) ptrs.add(new SynPtr(this, 2, -1));
    return ptrs;
  }