@Test public void requireThatInitialDelegateIsEmpty() { LazySet<String> set = newLazySet(new HashSet<String>()); assertEquals(LazySet.EmptySet.class, set.getDelegate().getClass()); }
final Set<E> getDelegate() { return delegate; }
LazySet implements Set<E> { final Set<E> getDelegate() { return delegate; } }
LazySet implements Set<E> { final Set<E> getDelegate() { return delegate; }  }
LazySet implements Set<E> { final Set<E> getDelegate() { return delegate; }  @Override final int size(); @Override final boolean isEmpty(); @Override final boolean contains(Object o); @Override final Iterator<E> iterator(); @Override final Object[] toArray(); @Override final T[] toArray(T[] a); @Override final boolean add(E e); @Override final boolean remove(Object o); @Override final boolean containsAll(Collection<?> c); @Override final boolean addAll(Collection<? extends E> c); @Override final boolean retainAll(Collection<?> c); @Override final boolean removeAll(Collection<?> c); @Override final void clear(); @Override final int hashCode(); @Override final boolean equals(Object obj); static LazySet<E> newHashSet(); }
LazySet implements Set<E> { final Set<E> getDelegate() { return delegate; }  @Override final int size(); @Override final boolean isEmpty(); @Override final boolean contains(Object o); @Override final Iterator<E> iterator(); @Override final Object[] toArray(); @Override final T[] toArray(T[] a); @Override final boolean add(E e); @Override final boolean remove(Object o); @Override final boolean containsAll(Collection<?> c); @Override final boolean addAll(Collection<? extends E> c); @Override final boolean retainAll(Collection<?> c); @Override final boolean removeAll(Collection<?> c); @Override final void clear(); @Override final int hashCode(); @Override final boolean equals(Object obj); static LazySet<E> newHashSet();  }