Map<String, Set<Type>> outputTypes = Maps.newHashMap();
Map<String, String> properties = Maps.newHashMap(flowletSpec.getProperties());
Reflections.visit(flowlet, TypeToken.of(flowlet.getClass()),
new PropertyFieldExtractor(properties),
new OutputEmitterFieldExtractor(outputTypes),
new ProcessMethodExtractor(inputTypes));
this.inputTypes = immutableCopyOf(inputTypes);
this.outputTypes = immutableCopyOf(outputTypes);
this.flowletSpec = new DefaultFlowletSpecification(flowlet.getClass().getName(),
flowletName == null ? flowletSpec.getName() : flowletName,