The language specifies that if *T implements the methods of an interface I then only a
*T (pointer) value will satisfy I, and not a T (value) value. So encoding/json can't see
that *DecimalE8 implements MarshalJSON because it only has a DecimalE8 value.
It is important to preserve this property, because a value implemented on *T might
assume that it can modify the underlying T value (which, given a value receiver, it
could not).
Intellectual Property and Other Proprietary Rights
...
You may not use the Service to download, publish, torrent, distribute, use, or otherwise copy in any manner any text, music, software, art, image, or other work protected by copyright law unless you have permission from the owner of the work to use or copy the work in that manner, or you are otherwise permitted by established intellectual property law to copy or use the work or rights in that manner;
...