/*
 * @author Ranides Atterwim <ranides@gmail.com>
 * @copyright Ranides Atterwim
 * @license WTFPL
 * @url http://ranides.net/projects/assira
 */

package net.ranides.assira.reflection.mockup;

import java.util.List;
import java.util.Map;

/**
 *
 * @author Ranides Atterwim <ranides@gmail.com>
 */
public class ForRMethod<T> {

    public static final ForRMethod<String> F1 = new ForRMethod<String>();
    
    public List<T> m1() { throw new UnsupportedOperationException(); }
    
    public List<? super Integer> m2() { throw new UnsupportedOperationException(); }
    
    public List<? extends T> m3() { throw new UnsupportedOperationException(); }
    
    public class Record<Q> {
        
        public <R> Map<T,Map<Q,Map<R, Integer>>> map1(R a,T b,Q c,Integer d) { throw new UnsupportedOperationException(); }
        
        public <R> Map<T,Map<Q,Map<R, Integer>>> map2(
            List<R> a,
            List<T> b,
            List<Q> c,
            List<Integer> d
        ) { 
            throw new UnsupportedOperationException(); 
        }
        
    }
    
    public static class TAction {
        
        private final int n;

        public TAction(int n) {
            this.n = n;
        }
        
        public String hello(int a, int b) {
            return "[" + (n*a) + ":" + (n*b) + "]";
        }
        
        public static String stat(int a, int b) {
            return "[" + a + "/" + b + "]";
        }
        
        public static String nop() {
            return "nop!";
        }
    }
    
}
