// Path: centipede-parser/src/main/java/com/ontology2/centipede/parser/OptionParser.java
// static Object defaultValueFor(Type type) {
//     if (Byte.TYPE.equals(type)) {
//         return (byte) 0;
//     }
//     ;
// 
//     if (Short.TYPE.equals(type)) {
//         return (short) 0;
//     }
// 
//     if (Integer.TYPE.equals(type)) {
//         return (int) 0;
//     }
// 
//     if (Long.TYPE.equals(type)) {
//         return 0L;
//     }
// 
//     if (Float.TYPE.equals(type)) {
//         return 0.0F;
//     }
// 
//     if (Double.TYPE.equals(type)) {
//         return 0.0;
//     }
// 
//     if (Boolean.TYPE.equals(type)) {
//         return false;
//     }
// 
//     if (Character.TYPE.equals(type)) {
//         return '\0';
//     }
// 
//     if (String.class.equals(type)) {
//         return "";
//     }
// 
//     if (List.class.equals(type)) {
//         return new ArrayList();
//     }
// 
//     if (type instanceof ParameterizedType) {
//         ParameterizedType generic = (ParameterizedType) type;
//         if (List.class.isAssignableFrom((Class) generic.getRawType())) {
//             return new ArrayList();
//         }
//     }
// 
//     return null;
// }
// 
// Path: centipede-parser/src/main/java/com/ontology2/centipede/parser/OptionParser.java
// static Field findPositionalParameter(Class that) {
//     for (Field f : that.getFields())
//         if(f.getAnnotation(Positional.class)!=null) {
//             if(!List.class.isAssignableFrom(f.getType()))
//                 throw new MisconfigurationException("The @Positional parameter must be a List<String>");
// 
//             ParameterizedType generic=(ParameterizedType) f.getGenericType();
//             if(!String.class.equals(generic.getActualTypeArguments()[0]))
//                 throw new MisconfigurationException("The @Positional parameter must be a List<String>");
// 
//             return f;
//         }
//     return null;
// }


import org.junit.Assert;
import org.junit.Test;
import static com.ontology2.centipede.parser.OptionParser.defaultValueFor;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.ontology2.centipede.parser.OptionParser.findPositionalParameter;
import static org.junit.Assert.*;
    public void testDefaults() {

        // 8 primitive types get defaults from the JLS

        assertEquals((byte) 0, defaultValueFor(Byte.TYPE));
        assertEquals((short) 0, defaultValueFor(Short.TYPE));
        assertEquals(0, defaultValueFor(Integer.TYPE));
        assertEquals(0L, defaultValueFor(Long.TYPE));

        assertEquals(0.0f, defaultValueFor(Float.TYPE));
        assertEquals(0.0, defaultValueFor(Double.TYPE));
        assertEquals(false, defaultValueFor(Boolean.TYPE));
        assertEquals('\0', defaultValueFor(Character.TYPE));

        // For a string we get the empty String

        assertEquals("", defaultValueFor(String.class));
        assertEquals(new ArrayList(), defaultValueFor(List.class));

        ParameterizedType t=(ParameterizedType)
                ((new ArrayList<Exception>())
                .getClass()
                .getGenericSuperclass());

        assertEquals(new ArrayList<Exception>(), defaultValueFor(t));
        assertEquals(new ArrayList<Long>(), defaultValueFor(t));
    }

    @Test
    public void extractsPositional() {
// Path: centipede-parser/src/main/java/com/ontology2/centipede/parser/OptionParser.java
// static Object defaultValueFor(Type type) {
//     if (Byte.TYPE.equals(type)) {
//         return (byte) 0;
//     }
//     ;
// 
//     if (Short.TYPE.equals(type)) {
//         return (short) 0;
//     }
// 
//     if (Integer.TYPE.equals(type)) {
//         return (int) 0;
//     }
// 
//     if (Long.TYPE.equals(type)) {
//         return 0L;
//     }
// 
//     if (Float.TYPE.equals(type)) {
//         return 0.0F;
//     }
// 
//     if (Double.TYPE.equals(type)) {
//         return 0.0;
//     }
// 
//     if (Boolean.TYPE.equals(type)) {
//         return false;
//     }
// 
//     if (Character.TYPE.equals(type)) {
//         return '\0';
//     }
// 
//     if (String.class.equals(type)) {
//         return "";
//     }
// 
//     if (List.class.equals(type)) {
//         return new ArrayList();
//     }
// 
//     if (type instanceof ParameterizedType) {
//         ParameterizedType generic = (ParameterizedType) type;
//         if (List.class.isAssignableFrom((Class) generic.getRawType())) {
//             return new ArrayList();
//         }
//     }
// 
//     return null;
// }
// 
// Path: centipede-parser/src/main/java/com/ontology2/centipede/parser/OptionParser.java
// static Field findPositionalParameter(Class that) {
//     for (Field f : that.getFields())
//         if(f.getAnnotation(Positional.class)!=null) {
//             if(!List.class.isAssignableFrom(f.getType()))
//                 throw new MisconfigurationException("The @Positional parameter must be a List<String>");
// 
//             ParameterizedType generic=(ParameterizedType) f.getGenericType();
//             if(!String.class.equals(generic.getActualTypeArguments()[0]))
//                 throw new MisconfigurationException("The @Positional parameter must be a List<String>");
// 
//             return f;
//         }
//     return null;
// }


// Path: centipede-parser/src/test/java/com/ontology2/centipede/parser/TestAnnotationExtraction.java
import org.junit.Assert;
import org.junit.Test;
import static com.ontology2.centipede.parser.OptionParser.defaultValueFor;
import java.lang.reflect.Field;
import java.lang.reflect.ParameterizedType;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import static com.ontology2.centipede.parser.OptionParser.findPositionalParameter;
import static org.junit.Assert.*;

    public void testDefaults() {

        // 8 primitive types get defaults from the JLS

        assertEquals((byte) 0, defaultValueFor(Byte.TYPE));
        assertEquals((short) 0, defaultValueFor(Short.TYPE));
        assertEquals(0, defaultValueFor(Integer.TYPE));
        assertEquals(0L, defaultValueFor(Long.TYPE));

        assertEquals(0.0f, defaultValueFor(Float.TYPE));
        assertEquals(0.0, defaultValueFor(Double.TYPE));
        assertEquals(false, defaultValueFor(Boolean.TYPE));
        assertEquals('\0', defaultValueFor(Character.TYPE));

        // For a string we get the empty String

        assertEquals("", defaultValueFor(String.class));
        assertEquals(new ArrayList(), defaultValueFor(List.class));

        ParameterizedType t=(ParameterizedType)
                ((new ArrayList<Exception>())
                .getClass()
                .getGenericSuperclass());

        assertEquals(new ArrayList<Exception>(), defaultValueFor(t));
        assertEquals(new ArrayList<Long>(), defaultValueFor(t));
    }

    @Test
    public void extractsPositional() {
        Field f=findPositionalParameter(InheritedOptionExample.class);