def to_intermediate(self):
self.validate()<EOL>self.intermediate_data = OrderedDict()<EOL>for converter_class in self.converters:<EOL><INDENT>if not converter_class.should_run_forward(self.config):<EOL><INDENT>continue<EOL><DEDENT>converter = converter_class(self)<EOL>value = converter.to_intermediate()<EOL>if value and isinstance(value, (tuple, list)):  <EOL><INDENT>value = OrderedDict(value)<EOL><DEDENT>if value:<EOL><INDENT>self.intermediate_data = merge_config(self.intermediate_data,<EOL>value,<EOL>list_identifiers=['<STR_LIT>'])<EOL><DEDENT><DEDENT>
Converts the NetJSON configuration dictionary (self.config)
to the intermediate data structure (self.intermediate_data) that will
be then used by the renderer class to generate the router configuration