code: def infer_type(self, in_type):
          
          return in_type, [in_type[0]]*len(self.list_outputs()), \
              [in_type[0]]*len(self.list_auxiliary_states())
docs: infer_type interface. override to create new operators
  
          Parameters
          ----------
          in_type : list of np.dtype
              list of argument types in the same order as
              declared in list_arguments.
  
          Returns
          -------
          in_type : list
              list of argument types. Can be modified from in_type.
          out_type : list
              list of output types calculated from in_type,
              in the same order as declared in list_outputs.
          aux_type : Optional, list
              list of aux types calculated from in_type,
              in the same order as declared in list_auxiliary_states.