<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def addrecords(X, new):
 """ Append one or more records to the end of a numpy recarray or ndarray . Can take a single record, void or tuple, or a list of records, voids or tuples. Implemented by the tabarray method :func:`tabular.tab.tabarray.addrecords`. **Parameters** **X** : numpy ndarray with structured dtype or recarray The array to add records to. **new** : record, void or tuple, or list of them Record(s) to add to `X`. **Returns** **out** : numpy ndarray with structured dtype New numpy array made up of `X` plus the new records. **See also:** :func:`tabular.spreadsheet.rowstack` """

    if isinstance(new, np.record) or isinstance(new, np.void) or \
                                                        isinstance(new, tuple):
        new = [new]
    return np.append(X, utils.fromrecords(new, type=np.ndarray,
                                              dtype=X.dtype), axis=0)