title: Has anyone tried creating Immutable Forwarding Decorators in Guava
body: <p>I just started experimenting with the Decorators.  One thing I have not seen though is Immutable Forwarding Decorators.  The sample code I am working on is <a href="https://stackoverflow.com/q/15140195/532548">here</a></p>
  
  <p>It seems like I can specify an ImmutableSet for the decorator, but there is no compile time warning if the ImmutableSet is a "delegate" of ForwardingSet.</p>
  
  <p>Do I have need to extend the ForwardingSet and create ForwardingImmutableSet and then use that as my decorator?</p>
  
  <p>Has anyone tried this?</p>
  
  <p>Any advice would be helpful.</p>
  
  <p>Using the code link provided above try this: </p>
  
  <pre><code>public void test1()
      {
          final ImmutableSet&lt;String&gt; stringsA = ImmutableSet.of("A1", "A2", "A3");
  
          final ISetA a = SetA.of(stringsA);
  
          a.add("A0");                // Run-time error
          stringsA.add("A0");     // Compile time warning, Run-time error
      }
  </code></pre>
  
  <p>I just want to see compile time warning for "a.add("A0");"</p>
  
  <p>Of course I have the choice of creating a more restricted interface and I might just start there, but I want to know if I have to do a ForwardingImmutableSet where do I start?</p>