public <W> FieldQuery<Field<W>> hasValueType(final Class<W> valueType) { Set<Field<W>> result = set(); for (Field<?> f : this) { if (valueType.isAssignableFrom(f.getType())) { result.add((Field<W>) f); } } return new FieldQuery<Field<W>>(result); }