boon/src/main/java/org/boon/core/reflection/BeanUtils.java
private static Map<String, FieldAccess> getFieldsFromMap(final Map<String, Object> map ) {


        return new Map<String, FieldAccess>() {
            @Override
            public int size() {
                return map.size();
            }

            @Override
            public boolean isEmpty() {
                return map.isEmpty();
            }

            @Override
            public boolean containsKey(Object key) {
                return map.containsKey(key);
            }

            @Override
            public boolean containsValue(Object value) {
                return true;
            }

            @Override
            public FieldAccess get(final Object key) {
                return new FieldAccess() {
                    @Override
                    public boolean injectable() {
                        return false;
                    }

                    @Override
                    public boolean requiresInjection() {
                        return false;
                    }

                    @Override
                    public boolean isNamed() {
                        return false;
                    }

                    @Override
                    public boolean hasAlias() {
                        return false;
                    }

                    @Override
                    public String alias() {
                        return null;
                    }

                    @Override
                    public String named() {
                        return key.toString();
                    }

                    @Override
                    public String name() {
                        return key.toString();
                    }

                    @Override
                    public Object getValue(Object obj) {
                        return map.get(key);
                    }

                    @Override
                    public void setValue(Object obj, Object value) {
                        map.put(key.toString(), value);
                    }

                    @Override
                    public void setFromValue(Object obj, Value value) {
                        map.put(key.toString(), value.toValue());
                    }

                    @Override
                    public boolean getBoolean(Object obj) {
                        return Conversions.toBoolean(getValue(key));
                    }

                    @Override
                    public void setBoolean(Object obj, boolean value) {

                        setValue(map, value);

                    }

                    @Override
                    public int getInt(Object obj) {

                        return Conversions.toInt(getValue(key));
                    }

                    @Override
                    public void setInt(Object obj, int value) {

                        setValue(map, value);
                    }

                    @Override
                    public short getShort(Object obj) {

                        return Conversions.toShort(getValue(key));
                    }

                    @Override
                    public void setShort(Object obj, short value) {

                        setValue(map, value);

                    }

                    @Override
                    public char getChar(Object obj) {

                        return Conversions.toChar(getValue(key));
                    }

                    @Override
                    public void setChar(Object obj, char value) {

                        setValue(map, value);

                    }

                    @Override
                    public long getLong(Object obj) {

                        return Conversions.toChar(getValue(key));
                    }

                    @Override
                    public void setLong(Object obj, long value) {

                        setValue(map, value);
                    }

                    @Override
                    public double getDouble(Object obj) {

                        return Conversions.toDouble(getValue(key));
                    }

                    @Override
                    public void setDouble(Object obj, double value) {


                        setValue(map, value);

                    }

                    @Override
                    public float getFloat(Object obj) {

                        return Conversions.toFloat(getValue(key));
                    }

                    @Override
                    public void setFloat(Object obj, float value) {

                        setValue(map, value);

                    }

                    @Override
                    public byte getByte(Object obj) {

                        return Conversions.toByte(getValue(key));
                    }

                    @Override
                    public void setByte(Object obj, byte value) {

                        setValue(map, value);

                    }

                    @Override
                    public Object getObject(Object obj) {

                        return getValue(obj);
                    }

                    @Override
                    public void setObject(Object obj, Object value) {

                        this.setValue(obj, value);
                    }

                    @Override
                    public TypeType typeEnum() {
                        return TypeType.OBJECT;
                    }

                    @Override
                    public boolean isPrimitive() {
                        return false;
                    }

                    @Override
                    public boolean isFinal() {
                        return false;
                    }

                    @Override
                    public boolean isStatic() {
                        return false;
                    }

                    @Override
                    public boolean isVolatile() {
                        return false;
                    }

                    @Override
                    public boolean isQualified() {
                        return false;
                    }

                    @Override
                    public boolean isReadOnly() {
                        return false;
                    }

                    @Override
                    public boolean isWriteOnly() {
                        return false;
                    }

                    @Override
                    public Class<?> type() {
                        return Object.class;
                    }

                    @Override
                    public Class<?> declaringParent() {
                        return null;
                    }

                    @Override
                    public Object parent() {
                        return map;
                    }

                    @Override
                    public Field getField() {
                        return null;
                    }

                    @Override
                    public boolean include() {
                        return true;
                    }

                    @Override
                    public boolean ignore() {
                        return false;
                    }

                    @Override
                    public ParameterizedType getParameterizedType() {
                        return null;
                    }

                    @Override
                    public Class<?> getComponentClass() {
                        return null;
                    }

                    @Override
                    public boolean hasAnnotation(String annotationName) {
                        return false;
                    }

                    @Override
                    public Map<String, Object> getAnnotationData(String annotationName) {
                        return null;
                    }

                    @Override
                    public boolean isViewActive(String activeView) {
                        return false;
                    }

                    @Override
                    public void setStaticValue(Object newValue) {

                    }

                    @Override
                    public TypeType componentType() {
                        return null;
                    }
                };
            }

            @Override
            public FieldAccess put(String key, FieldAccess value) {
                return null;
            }

            @Override
            public FieldAccess remove(Object key) {
                return null;
            }

            @Override
            public void putAll(Map<? extends String, ? extends FieldAccess> m) {

            }

            @Override
            public void clear() {

            }

            @Override
            public Set<String> keySet() {
                return null;
            }

            @Override
            public Collection<FieldAccess> values() {
                return null;
            }

            @Override
            public Set<Entry<String, FieldAccess>> entrySet() {
                return null;
            }
        };


    }
private static Map<String, FieldAccess> getFieldsFromMap(final Map<String, Object> map ) {


        return new Map<String, FieldAccess>() {
            @Override
            public int size() {
                return map.size();
            }

            @Override
            public boolean isEmpty() {
                return map.isEmpty();
            }

            @Override
            public boolean containsKey(Object key) {
                return map.containsKey(key);
            }

            @Override
            public boolean containsValue(Object value) {
                return true;
            }

            @Override
            public FieldAccess get(final Object key) {
                return new FieldAccess() {
                    @Override
                    public boolean injectable() {
                        return false;
                    }

                    @Override
                    public boolean requiresInjection() {
                        return false;
                    }

                    @Override
                    public boolean isNamed() {
                        return false;
                    }

                    @Override
                    public boolean hasAlias() {
                        return false;
                    }

                    @Override
                    public String alias() {
                        return null;
                    }

                    @Override
                    public String named() {
                        return key.toString();
                    }

                    @Override
                    public String name() {
                        return key.toString();
                    }

                    @Override
                    public Object getValue(Object obj) {
                        return map.get(key);
                    }

                    @Override
                    public void setValue(Object obj, Object value) {
                        map.put(key.toString(), value);
                    }

                    @Override
                    public void setFromValue(Object obj, Value value) {
                        map.put(key.toString(), value.toValue());
                    }

                    @Override
                    public boolean getBoolean(Object obj) {
                        return Conversions.toBoolean(getValue(key));
                    }

                    @Override
                    public void setBoolean(Object obj, boolean value) {

                        setValue(map, value);

                    }

                    @Override
                    public int getInt(Object obj) {

                        return Conversions.toInt(getValue(key));
                    }

                    @Override
                    public void setInt(Object obj, int value) {

                        setValue(map, value);
                    }

                    @Override
                    public short getShort(Object obj) {

                        return Conversions.toShort(getValue(key));
                    }

                    @Override
                    public void setShort(Object obj, short value) {

                        setValue(map, value);

                    }

                    @Override
                    public char getChar(Object obj) {

                        return Conversions.toChar(getValue(key));
                    }

                    @Override
                    public void setChar(Object obj, char value) {

                        setValue(map, value);

                    }

                    @Override
                    public long getLong(Object obj) {

                        return Conversions.toChar(getValue(key));
                    }

                    @Override
                    public void setLong(Object obj, long value) {

                        setValue(map, value);
                    }

                    @Override
                    public double getDouble(Object obj) {

                        return Conversions.toDouble(getValue(key));
                    }

                    @Override
                    public void setDouble(Object obj, double value) {


                        setValue(map, value);

                    }

                    @Override
                    public float getFloat(Object obj) {

                        return Conversions.toFloat(getValue(key));
                    }

                    @Override
                    public void setFloat(Object obj, float value) {

                        setValue(map, value);

                    }

                    @Override
                    public byte getByte(Object obj) {

                        return Conversions.toByte(getValue(key));
                    }

                    @Override
                    public void setByte(Object obj, byte value) {

                        setValue(map, value);

                    }

                    @Override
                    public Object getObject(Object obj) {

                        return getValue(obj);
                    }

                    @Override
                    public void setObject(Object obj, Object value) {

                        this.setValue(obj, value);
                    }

                    @Override
                    public TypeType typeEnum() {
                        return TypeType.OBJECT;
                    }

                    @Override
                    public boolean isPrimitive() {
                        return false;
                    }

                    @Override
                    public boolean isFinal() {
                        return false;
                    }

                    @Override
                    public boolean isStatic() {
                        return false;
                    }

                    @Override
                    public boolean isVolatile() {
                        return false;
                    }

                    @Override
                    public boolean isQualified() {
                        return false;
                    }

                    @Override
                    public boolean isReadOnly() {
                        return false;
                    }

                    @Override
                    public boolean isWriteOnly() {
                        return false;
                    }

                    @Override
                    public Class<?> type() {
                        return Object.class;
                    }

                    @Override
                    public Class<?> declaringParent() {
                        return null;
                    }

                    @Override
                    public Object parent() {
                        return map;
                    }

                    @Override
                    public Field getField() {
                        return null;
                    }

                    @Override
                    public boolean include() {
                        return true;
                    }

                    @Override
                    public boolean ignore() {
                        return false;
                    }

                    @Override
                    public ParameterizedType getParameterizedType() {
                        return null;
                    }

                    @Override
                    public Class<?> getComponentClass() {
                        return null;
                    }

                    @Override
                    public boolean hasAnnotation(String annotationName) {
                        return false;
                    }

                    @Override
                    public Map<String, Object> getAnnotationData(String annotationName) {
                        return null;
                    }

                    @Override
                    public boolean isViewActive(String activeView) {
                        return false;
                    }

                    @Override
                    public void setStaticValue(Object newValue) {

                    }

                    @Override
                    public TypeType componentType() {
                        return null;
                    }
                };
            }

            @Override
            public FieldAccess put(String key, FieldAccess value) {
                return null;
            }

            @Override
            public FieldAccess remove(Object key) {
                return null;
            }

            @Override
            public void putAll(Map<? extends String, ? extends FieldAccess> m) {

            }

            @Override
            public void clear() {

            }

            @Override
            public Set<String> keySet() {
                return null;
            }

            @Override
            public Collection<FieldAccess> values() {
                return null;
            }

            @Override
            public Set<Entry<String, FieldAccess>> entrySet() {
                return null;
            }
        };


    }
Get fields from map.

@param map
@return