class RecordValueReader implements ValueReader<Record> {
  public Object get(Record source, String memberName) {
    Field<?> field = matchField(source, memberName);
    if (field != null) {
      return source.getValue(field);
    }
    return null;
  }

  public Member<Record> getMember(Record source, String memberName) {<FILL_FUNCTION_BODY>}

  private Field<?> matchField(Record source, String memberName) {
    for (Field<?> field : source.fields())
      if (memberName.equalsIgnoreCase(field.getName()))
        return field;
    return null;
  }

  public Collection<String> memberNames(Record source) {
    Field<?>[] fields = source.fields();
    if (fields != null) {
      List<String> memberNames = new ArrayList<String>(fields.length);
      for (Field<?> field : fields)
        memberNames.add(field.getName());
      return memberNames;
    }

    return null;
  }

  @Override
  public String toString() {
    return "jOOQ";
  }
}

    Field<?> field = matchField(source, memberName);
    Class<?> type = field != null ? field.getType() : Record.class;
    return new Member<Record>(type) {
      @Override
      public Object get(Record source, String memberName) {
        return RecordValueReader.this.get(source, memberName);
      }
    };
  
<no_super_class>