class MapValueReader implements ValueReader<Map<String, Object>> {
  @Override
  public Object get(Map<String, Object> source, String memberName) {
    return source.get(memberName);
  }

  @SuppressWarnings("unchecked")
  @Override
  public Member<Map<String, Object>> getMember(Map<String, Object> source, String memberName) {<FILL_FUNCTION_BODY>}

  @Override
  public Collection<String> memberNames(Map<String, Object> source) {
    return source.keySet();
  }

}

    final Object value = get(source, memberName);
    if (value instanceof Map)
      return new Member<Map<String, Object>>(Map.class) {
        @Override
        public Map<String, Object> getOrigin() {
          return (Map<String, Object>) value;
        }

        @Override
        public Object get(Map<String, Object> source, String memberName) {
          return MapValueReader.this.get(source, memberName);
        }
      };
    Class<?> memberType = value != null ? value.getClass() : Object.class;
    return new Member<Map<String, Object>>(memberType) {
      @Override
      public Map<String, Object> getOrigin() {
        return null;
      }

      @Override
      public Object get(Map<String, Object> source, String memberName) {
        return MapValueReader.this.get(source, memberName);
      }
    };
  
<no_super_class>