nodes: 0, module; 1, function_definition; 2, function_name:uintersect1d; 3, parameters; 4, block; 5, identifier:arr1; 6, identifier:arr2; 7, default_parameter; 8, expression_statement; 9, expression_statement; 10, expression_statement; 11, return_statement; 12, identifier:assume_unique; 13, False; 14, comment:"""Find the sorted unique elements of the two input arrays.
  
      A wrapper around numpy.intersect1d that preserves units.  All input arrays
      must have the same units.  See the documentation of numpy.intersect1d for
      full details.
  
      Examples
      --------
      >>> from unyt import cm
      >>> A = [1, 2, 3]*cm
      >>> B = [2, 3, 4]*cm
      >>> uintersect1d(A, B)
      unyt_array([2, 3], 'cm')
  
      """; 15, assignment; 16, assignment; 17, identifier:v; 18, identifier:v; 19, call; 20, identifier:v; 21, call; 22, attribute; 23, argument_list; 24, identifier:_validate_numpy_wrapper_units; 25, argument_list; 26, identifier:np; 27, identifier:intersect1d; 28, identifier:arr1; 29, identifier:arr2; 30, keyword_argument; 31, identifier:v; 32, list; 33, identifier:assume_unique; 34, identifier:assume_unique; 35, identifier:arr1; 36, identifier:arr2
code: def uintersect1d(arr1, arr2, assume_unique=False):
      """Find the sorted unique elements of the two input arrays.
  
      A wrapper around numpy.intersect1d that preserves units.  All input arrays
      must have the same units.  See the documentation of numpy.intersect1d for
      full details.
  
      Examples
      --------
      >>> from unyt import cm
      >>> A = [1, 2, 3]*cm
      >>> B = [2, 3, 4]*cm
      >>> uintersect1d(A, B)
      unyt_array([2, 3], 'cm')
  
      """
      v = np.intersect1d(arr1, arr2, assume_unique=assume_unique)
      v = _validate_numpy_wrapper_units(v, [arr1, arr2])
      return v