package com.googlecode.totallylazy.proxy; public class ThreadLocalInvocation extends ThreadLocal<Invocation<?,?>>{ @Override public Invocation<?,?> get() { final Invocation<?,?> result = super.get(); super.set(null); return result; } @Override public void set(Invocation<?,?> value) { if(get() != null){ throw new UnsupportedOperationException("An unused call already exists, you must use any previous calls before starting another"); } super.set(value); } }