def _calculate_states(self, solution, t, step, int_step):
next_states = [<NUM_LIT:0>] * self._num_osc;<EOL>for index in range (<NUM_LIT:0>, self._num_osc, <NUM_LIT:1>):            <EOL><INDENT>result = odeint(self._neuron_states, self._states[index], numpy.arange(t - step, t, int_step), (index , ));<EOL>next_states[index] = result[len(result) - <NUM_LIT:1>][<NUM_LIT:0>];<EOL><DEDENT>self._outputs = [val for val in self._outputs_buffer];<EOL>return next_states<EOL>
!
        @brief Calculates new states for neurons using differential calculus. Returns new states for neurons.

        @param[in] solution (solve_type): Type solver of the differential equation.
        @param[in] t (double): Current time of simulation.
        @param[in] step (double): Step of solution at the end of which states of oscillators should be calculated.
        @param[in] int_step (double): Step differentiation that is used for solving differential equation.

        @return (list) New states for neurons.