@SuppressWarnings("serial")
	public Map<String, PullMeasure<?>> createPullsFromFields(final Object object) {
		Map<String, PullMeasure<?>> measures = new HashMap<String, PullMeasure<?>>();
		Class<? extends Object> clazz = object.getClass();
		for (final Field field : clazz.getFields()) {
			String key = field.getName();
			// TODO exploit return type to restrict the generics
			measures.put(key, new SimplePullMeasure<Object>(key) {

				@Override
				public Object get() {
					try {
						return field.get(object);
					} catch (IllegalArgumentException | IllegalAccessException e) {
						throw new RuntimeException();
					}
				}
			});
		}
		return measures;
	}
@ SuppressWarnings ( "serial" ) public Map < String , PullMeasure < ? > > createPullsFromFields ( final Object object ) { Map < String , PullMeasure < ? > > measures = new HashMap < String , PullMeasure < ? > > ( ) ; Class < ? extends Object > clazz = object . getClass ( ) ; for ( final Field field : clazz . getFields ( ) ) { String key = field . getName ( ) ; measures . put ( key , new SimplePullMeasure < Object > ( key ) { @ Override public Object get ( ) { try { return field . get ( object ) ; } catch ( IllegalArgumentException | IllegalAccessException e ) { throw new RuntimeException ( ) ; } } } ) ; } return measures ; }
Create {@link PullMeasure}s based on the fields available from an
instance, whatever it is. The {@link Class} of the instance is analyzed
to retrieve its public fields and a {@link PullMeasure} is built for each
of them. The name of the field is further exploited to identify the
measure, such that the map returned use the name of the field as a key
which maps to the {@link PullMeasure} built from this field. The
{@link PullMeasure} itself is named by using the name of the field.

@param object
the {@link Object} to cover
@return the {@link Map} which contains the names of the getter methods
and the corresponding {@link PullMeasure} built from them