/*
 * @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.ArrayList;
import net.ranides.assira.annotations.Meta;

/**
 *
 * @author Ranides Atterwim <ranides@gmail.com>
 */
@SuppressWarnings("PMD")
public class ForClassTraits {
    
    public static final Class<?> ABSTRACT   = CAbstract.class;
    public static final Class<?> FINAL      = CFinal.class;
    public static final Class<?> INTERFACE  = CInterface.class;
    public static final Class<?> PRIVATE    = CPrivate.class;
    public static final Class<?> PROTECTED  = CProtected.class;
    public static final Class<?> PUBLIC     = CPublic.class;
    public static final Class<?> STATIC     = CStatic.class;
    public static final Class<?> NOTHING    = CNothing.class;
    public static final Class<?> PARAMS     = CParams.class;
    public static final Class<?> NO_PARAMS  = CNoParams.class;
    
    
    public class CPublic { }
    
    protected class CProtected { }
    
    private class CPrivate { }
    
    interface CInterface { }
    
    abstract class CAbstract { }
    
    final class CFinal { }
    
    static class CStatic { }
    
    class CNothing { }
    
    class CParams<A,B> { }
    
    class CNoParams extends ArrayList<Integer> { }
    
    @Meta.Immutable
    public class CAnnotated1 { 
        
        private CAnnotated1(int a) { }
        
        CAnnotated1(double a) { }
        
        protected CAnnotated1(char a) { }
        
        public CAnnotated1(float a) { }
    }
    
    @Meta.Immutable
    @Meta.Unsafe    
    public class CAnnotated2 { }
    
}
