class HashPointsToSet extends PointsToSetInternal {
  public HashPointsToSet(Type type, PAG pag) {
    super(type);
    this.pag = pag;
  }

  /** Returns true if this set contains no run-time objects. */
  public final boolean isEmpty() {
    return s.isEmpty();
  }

  /**
   * Adds contents of other into this set, returns true if this set changed.
   */
  public final boolean addAll(final PointsToSetInternal other, final PointsToSetInternal exclude) {
    if (other instanceof HashPointsToSet && exclude == null
        && (pag.getTypeManager().getFastHierarchy() == null || type == null || type.equals(other.type))) {
      return s.addAll(((HashPointsToSet) other).s);
    } else {
      return super.addAll(other, exclude);
    }
  }

  /** Calls v's visit method on all nodes in this set. */
  public final boolean forall(P2SetVisitor v) {
    for (Iterator<Node> it = new ArrayList<Node>(s).iterator(); it.hasNext();) {
      v.visit(it.next());
    }
    return v.getReturnValue();
  }

  /** Adds n to this set, returns true if n was not already in this set. */
  public final boolean add(Node n) {<FILL_FUNCTION_BODY>}

  /** Returns true iff the set contains n. */
  public final boolean contains(Node n) {
    return s.contains(n);
  }

  public static P2SetFactory getFactory() {
    return new P2SetFactory() {
      public PointsToSetInternal newSet(Type type, PAG pag) {
        return new HashPointsToSet(type, pag);
      }
    };
  }

  /* End of public methods. */
  /* End of package methods. */

  private final HashSet<Node> s = new HashSet<Node>(4);
  private PAG pag = null;
}

    if (pag.getTypeManager().castNeverFails(n.getType(), type)) {

      return s.add(n);
    }
    return false;
  
<methods>public void <init>(soot.Type) ,public abstract boolean add(soot.jimple.spark.pag.Node) ,public boolean addAll(soot.jimple.spark.sets.PointsToSetInternal, soot.jimple.spark.sets.PointsToSetInternal) ,public abstract boolean contains(soot.jimple.spark.pag.Node) ,public void flushNew() ,public abstract boolean forall(soot.jimple.spark.sets.P2SetVisitor) ,public soot.jimple.spark.sets.PointsToSetInternal getNewSet() ,public soot.jimple.spark.sets.PointsToSetInternal getOldSet() ,public soot.Type getType() ,public boolean hasNonEmptyIntersection(soot.PointsToSet) ,public void mergeWith(soot.jimple.spark.sets.PointsToSetInternal) ,public boolean pointsToSetEquals(java.lang.Object) ,public int pointsToSetHashCode() ,public Set<soot.jimple.ClassConstant> possibleClassConstants() ,public Set<java.lang.String> possibleStringConstants() ,public Set<soot.Type> possibleTypes() ,public void setType(soot.Type) ,public int size() ,public java.lang.String toString() ,public void unFlushNew() <variables>private static final org.slf4j.Logger logger,protected soot.Type type