// Path: GGAForms/ggaforms/src/main/java/com/greengrowapps/ggaforms/fields/FormInput.java
// public interface FormInput<T> {
// 
//     void setOnInputChangedListener(OnInputChangedListener listener);
// 
//     void setError(ValidationError error);
// 
//     Class<T> getType();
//     T getValue();
//     void setValue(T value);
// 
//     ValidationError getError();
// }
// 
// Path: GGAForms/ggaforms/src/main/java/com/greengrowapps/ggaforms/validation/InputBundle.java
// public class InputBundle {
// 
//     Map<String,FormInput> fieldMap = new HashMap<>();
// 
//     public void put(String propertyName, FormInput formInput) {
//         fieldMap.put(propertyName, formInput);
//     }
// 
//     public Set<String> getPropertiesNames() {
//         return fieldMap.keySet();
//     }
// 
//     public FormInput getInputNamed(String key) {
//         return fieldMap.get(key);
//     }
// 
//     public List<FormInput> getFields() {
//         return new ArrayList<FormInput>(fieldMap.values());
//     }
// }


import com.greengrowapps.ggaforms.fields.FormInput;
import com.greengrowapps.ggaforms.validation.InputBundle;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
                Asignator assignator = asignatorMap.get(property);
                Object objField = getObjectFromField(getFieldNamed(property));

                if(assignator instanceof IntrospectedObject){
                    asignatorMap.get(property).setTarget( objField );
                }
                else{
                    asignatorMap.get(property).setTarget(target);
                    inputs.getInputNamed(property).setValue( objField );
                }
            }
        } catch (FieldNotFoundException e) {
            throw new RuntimeException(e);
        } catch (NonBuildableException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public FormInput getInputFrom(Field field) {
        FormInput input = inputMap.get(field);
        if(input!=null){
            return input;
        }
        for(IntrospectedObject inner : innerObjects){
            input = inner.getInputFrom(field);
            if(input!=null){
                return input;
            }
        }
// Path: GGAForms/ggaforms/src/main/java/com/greengrowapps/ggaforms/fields/FormInput.java
// public interface FormInput<T> {
// 
//     void setOnInputChangedListener(OnInputChangedListener listener);
// 
//     void setError(ValidationError error);
// 
//     Class<T> getType();
//     T getValue();
//     void setValue(T value);
// 
//     ValidationError getError();
// }
// 
// Path: GGAForms/ggaforms/src/main/java/com/greengrowapps/ggaforms/validation/InputBundle.java
// public class InputBundle {
// 
//     Map<String,FormInput> fieldMap = new HashMap<>();
// 
//     public void put(String propertyName, FormInput formInput) {
//         fieldMap.put(propertyName, formInput);
//     }
// 
//     public Set<String> getPropertiesNames() {
//         return fieldMap.keySet();
//     }
// 
//     public FormInput getInputNamed(String key) {
//         return fieldMap.get(key);
//     }
// 
//     public List<FormInput> getFields() {
//         return new ArrayList<FormInput>(fieldMap.values());
//     }
// }


// Path: GGAForms/ggaforms/src/main/java/com/greengrowapps/ggaforms/introspection/IntrospectedObjectImpl.java
import com.greengrowapps.ggaforms.fields.FormInput;
import com.greengrowapps.ggaforms.validation.InputBundle;
import java.lang.reflect.Field;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

                Asignator assignator = asignatorMap.get(property);
                Object objField = getObjectFromField(getFieldNamed(property));

                if(assignator instanceof IntrospectedObject){
                    asignatorMap.get(property).setTarget( objField );
                }
                else{
                    asignatorMap.get(property).setTarget(target);
                    inputs.getInputNamed(property).setValue( objField );
                }
            }
        } catch (FieldNotFoundException e) {
            throw new RuntimeException(e);
        } catch (NonBuildableException e) {
            throw new RuntimeException(e);
        }
    }

    @Override
    public FormInput getInputFrom(Field field) {
        FormInput input = inputMap.get(field);
        if(input!=null){
            return input;
        }
        for(IntrospectedObject inner : innerObjects){
            input = inner.getInputFrom(field);
            if(input!=null){
                return input;
            }
        }
        return null;