classFilterList` parameter instead of a List.

>>> a = stream.Score()
>>> a.repeatInsert(note.Rest(), list(range(10)))
>>> for x in range(4):
...     n = note.Note('G#')
...     n.offset = x * 3
...     a.insert(n)
>>> found = a.getElementsByClass(note.Note)
>>> found
<music21.stream.iterator.StreamIterator for Score:0x118d20710 @:0>

>>> len(found)
4
>>> found[0].pitch.accidental.name
'sharp'

>>> foundStream = found.stream()
>>> isinstance(foundStream, stream.Score)
True


Notice that we do not find elements that are in
sub-streams of the main Stream.  We'll add 15 more rests
in a sub-stream, and they won't be found:

>>> b = stream.Stream()
>>> b.repeatInsert(note.Rest(), list(range(15)))
>>> a.insert(b)
>>> found = a.getElementsByClass(note.Rest)
>>> len(found)
10

To find them either (1) use `.flatten()` to get at everything:

>>> found = a.flatten().getElementsByClass(note.Rest)
>>> len(found)
25

Or, (2) recurse over the main stream and call .getElementsByClass
on each one.  Notice that the first subStream is actually the outermost
Stream:

>>> totalFound = 0
>>> for subStream in a.recurse(streamsOnly=True, includeSelf=True):
...     found = subStream.getElementsByClass(note.Rest)
...     totalFound += len(found)
>>> totalFound
25

The class name of the Stream created is usually the same as the original:

>>> found = a.getElementsByClass(note.Note).stream()
>>> found.__class__.__name__
'Score'

An exception is if `returnStreamSubClass` is False, which makes the method
return a generic Stream:

>>> found = a.getElementsByClass(note.Rest).stream(returnStreamSubClass=False)
>>> found.__class__.__name__
'Stream'

Make a list from a StreamIterator:

>>> foundList = list(a.recurse().getElementsByClass(note.Rest))
>>> len(foundList)
25
)