a-a equals zero
use original node if none was returned
extra fancy generic type comparison by Base
minor simplification tweaks