@@ -0,0 +1,1367 @@
+/*%0A * Copyright (C) 2010 TranceCode Software%0A *%0A * This library is free software; you can redistribute it and/or modify it under%0A * the terms of the GNU Lesser General Public License as published by the Free%0A * Software Foundation; either version 2.1 of the License, or (at your option)%0A * any later version.%0A * %0A * This library is distributed in the hope that it will be useful, but WITHOUT%0A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS%0A * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more%0A * details.%0A * %0A * You should have received a copy of the GNU Lesser General Public License%0A * along with this library; if not, write to the Free Software Foundation, Inc.,%0A * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA %0A */%0Apackage org.trancecode.core;%0A%0Aimport com.google.common.base.Supplier;%0Aimport org.trancecode.function.TcSuppliers;%0A%0A/**%0A * @author Herve Quiroz%0A */%0Apublic abstract class AbstractThunk%3CT%3E implements Supplier%3CT%3E%0A%7B%0A    private Supplier%3CT%3E value = new Supplier%3CT%3E()%0A    %7B%0A        @Override%0A        public T get()%0A        %7B%0A            final T computedValue = compute();%0A            value = TcSuppliers.singleton(computedValue);%0A            return computedValue;%0A        %7D%0A    %7D;%0A%0A    public final T get()%0A    %7B%0A        return value.get();%0A    %7D%0A%0A    protected abstract T compute();%0A%7D%0A

Add AbstractThunk