add return type to methods, dup when not-untyped, :value means no side-effects
rename :value to :const, when :const in statement position, no-op