Map<String, Set<Type>> inputTypes = Maps.newHashMap();
Map<String, Set<Type>> outputTypes = Maps.newHashMap();
Map<String, String> properties = Maps.newHashMap(flowletSpec.getProperties());
Reflections.visit(flowlet, TypeToken.of(flowlet.getClass()),
new DataSetFieldExtractor(datasets),
new PropertyFieldExtractor(properties),
new OutputEmitterFieldExtractor(outputTypes),
new ProcessMethodExtractor(inputTypes));
this.datasets = ImmutableSet.copyOf(datasets);
this.inputTypes = immutableCopyOf(inputTypes);