// Path: src/main/java/org/azeckoski/reflectutils/exceptions/FieldnameNotFoundException.java
// public class FieldnameNotFoundException extends RuntimeException {
// 
//    public String fieldName;
// 
//    public FieldnameNotFoundException(String fieldName) {
//       this(fieldName, null);
//    }
// 
//    public FieldnameNotFoundException(String fieldName, Throwable cause) {
//       this("Could not find fieldName ("+fieldName+") on object", fieldName, cause);
//    }
// 
//    public FieldnameNotFoundException(String message, String fieldName, Throwable cause) {
//       super(message, cause);
//       this.fieldName = fieldName;
//    }
// 
// }
// 
// Path: src/test/java/org/azeckoski/reflectutils/interfaces/TestInterfaceFour.java
// public interface TestInterfaceFour extends TestInterfaceOne, Runnable, Cloneable, Readable {
// 
// }


import junit.framework.TestCase;
import org.azeckoski.reflectutils.annotations.TestAnnote;
import org.azeckoski.reflectutils.classes.*;
import org.azeckoski.reflectutils.exceptions.FieldnameNotFoundException;
import org.azeckoski.reflectutils.interfaces.TestInterfaceFour;
import org.azeckoski.reflectutils.interfaces.TestInterfaceOne;
import java.io.Serializable;
import java.util.*;
        // test ultra nesting
        TestUltraNested ultra = new TestUltraNested("ULTRA", new TestNesting());
        value = reflectUtil.getFieldValue(ultra, "title");
        assertEquals("ULTRA", value);

        value = reflectUtil.getFieldValue(ultra, "testNesting.id");
        assertEquals(5, value);

        value = reflectUtil.getFieldValue(ultra, "testNesting.testEntity.id");
        assertEquals(new Long(3), value);

        value = reflectUtil.getFieldValue(ultra, "testNesting.sList[0]");
        assertEquals("A", value);

        value = reflectUtil.getFieldValue(ultra, "testNesting.sMap(A1)");
        assertEquals("ONE", value);

        value = reflectUtil.getFieldValue(ultra, "testNesting.myArray[1]");
        assertEquals("B", value);

        // basic pea support
        thing = new TestPea();
        value = reflectUtil.getFieldValue( thing, "id");
        assertNotNull(value);
        assertEquals("id", value);

        thing = new TestBean();
        try {
            value = reflectUtil.getFieldValue(thing, "id");
            fail("Should have thrown exception");
// Path: src/main/java/org/azeckoski/reflectutils/exceptions/FieldnameNotFoundException.java
// public class FieldnameNotFoundException extends RuntimeException {
// 
//    public String fieldName;
// 
//    public FieldnameNotFoundException(String fieldName) {
//       this(fieldName, null);
//    }
// 
//    public FieldnameNotFoundException(String fieldName, Throwable cause) {
//       this("Could not find fieldName ("+fieldName+") on object", fieldName, cause);
//    }
// 
//    public FieldnameNotFoundException(String message, String fieldName, Throwable cause) {
//       super(message, cause);
//       this.fieldName = fieldName;
//    }
// 
// }
// 
// Path: src/test/java/org/azeckoski/reflectutils/interfaces/TestInterfaceFour.java
// public interface TestInterfaceFour extends TestInterfaceOne, Runnable, Cloneable, Readable {
// 
// }


// Path: src/test/java/org/azeckoski/reflectutils/ReflectUtilTest.java
import junit.framework.TestCase;
import org.azeckoski.reflectutils.annotations.TestAnnote;
import org.azeckoski.reflectutils.classes.*;
import org.azeckoski.reflectutils.exceptions.FieldnameNotFoundException;
import org.azeckoski.reflectutils.interfaces.TestInterfaceFour;
import org.azeckoski.reflectutils.interfaces.TestInterfaceOne;
import java.io.Serializable;
import java.util.*;

        // test ultra nesting
        TestUltraNested ultra = new TestUltraNested("ULTRA", new TestNesting());
        value = reflectUtil.getFieldValue(ultra, "title");
        assertEquals("ULTRA", value);

        value = reflectUtil.getFieldValue(ultra, "testNesting.id");
        assertEquals(5, value);

        value = reflectUtil.getFieldValue(ultra, "testNesting.testEntity.id");
        assertEquals(new Long(3), value);

        value = reflectUtil.getFieldValue(ultra, "testNesting.sList[0]");
        assertEquals("A", value);

        value = reflectUtil.getFieldValue(ultra, "testNesting.sMap(A1)");
        assertEquals("ONE", value);

        value = reflectUtil.getFieldValue(ultra, "testNesting.myArray[1]");
        assertEquals("B", value);

        // basic pea support
        thing = new TestPea();
        value = reflectUtil.getFieldValue( thing, "id");
        assertNotNull(value);
        assertEquals("id", value);

        thing = new TestBean();
        try {
            value = reflectUtil.getFieldValue(thing, "id");
            fail("Should have thrown exception");
        } catch (FieldnameNotFoundException e) {