title: Type safe method chaining that doesn't allow repeats of operations
body: <p>I want to implement method chaining like in those questions:</p>
  
  <p><a href="https://stackoverflow.com/questions/4826392/best-practice-to-implement-scala-trait-which-supports-method-chaining">Best practice to implement Scala trait which supports method chaining</a> ;</p>
  
  <p><a href="https://stackoverflow.com/questions/9173848/scala-dsl-method-chaining-with-parameterless-methods">Scala DSL: method chaining with parameterless methods</a></p>
  
  <p>However, I want that once a "property" has been used, it cannot be used anymore.
  For example lets assume that I have a class "Myclass" for which I want to allow the use of definition "foo" and definition "bar" at most once and I don't care about the final return type. Thus:</p>
  
  <pre><code>val c = new Myclass
  c foo //ok !
  c foo bar // ok!
  c foo foo // refuse to compile
  c foo bar foo //refuse to compile
  </code></pre>
  
  <p>I'm struggling with this problem for a while and my vision starts becoming fuzzy!
  I tried to use implicit classes, however, whether they need to parse objects that <em>has not</em> used the associated property, and I can't find how, whether they need to "consume" the property by removing it from the object available property, and, again, I can't find how.</p>
  
  <p>I'm currently searching in the reflection API, but it is still a little obscure for me.</p>
  
  <p>Help would be appreciated! =)</p>