2 of 2 added 13 characters in body

# brainfuck, 61 bytes

+.+.[.[>]>+++>+++<<<[->+>->-<<<]<[[->+<]<]>>--[[>]<,<[<]>+]>]


Try it online!

Prints numbers as char codes indefinitely. For clarity, here's a version that prints in numbers (except for the first two elements, which are easy enough to verify).

### How It Works:

+.+. Prints the first two elements. These are the self-referential elements
This also intitialises the tape with the third element, 2
[ Start infinite loop
. Print current lowest element
[>]>+++>+++ Move to end of tape and create two 3s
<<<[->+>->-<<<] Subtract the last element of the tape from these 3s
<[[->+<]<]>> Move to the beginning of the tape
--  Subtract two from the first element
This leaves 2 as 0 and 1 as -1
[ If the number was 1
[>]<,  Delete the excess element from the end of the tape
<[<]>+ Remove the -1
]
> Move to the next element of the list
]