private boolean collect(
     FlowGraph graph,
     List<Tuple2<InputDescription, ExternalIoDescriptionProcessor>> inputs,
     List<Tuple2<OutputDescription, ExternalIoDescriptionProcessor>> outputs) {
   assert graph != null;
   assert inputs != null;
   assert outputs != null;
   boolean valid = true;
   Repository externals = environment.getExternals();
   for (FlowIn<?> port : graph.getFlowInputs()) {
     InputDescription desc = port.getDescription();
     ExternalIoDescriptionProcessor processor = externals.findProcessor(desc);
     if (processor != null) {
       inputs.add(Tuples.of(desc, processor));
     } else {
       environment.error("{0}を処理するプロセッサが見つかりませんでした。", desc.getClass().getName());
       valid = false;
     }
   }
   for (FlowOut<?> port : graph.getFlowOutputs()) {
     OutputDescription desc = port.getDescription();
     ExternalIoDescriptionProcessor processor = externals.findProcessor(desc);
     if (processor != null) {
       outputs.add(Tuples.of(desc, processor));
     } else {
       valid = false;
     }
   }
   return valid;
 }
 private BulkLoadImporterDescription extract(InputDescription description) {
   assert description != null;
   ImporterDescription importer = description.getImporterDescription();
   assert importer != null;
   assert importer instanceof BulkLoadImporterDescription;
   return (BulkLoadImporterDescription) importer;
 }
 private Location getInputLocation(InputDescription description) {
   assert description != null;
   String name = normalize(description.getName());
   return getEnvironment().getPrologueLocation(MODULE_NAME).append(name);
 }