code: func (re encodable) MarshalJSON() ([]byte, error) {
  	return Encode(re.e, re.obj)
  }
docs: // Marshal may get called on pointers or values, so implement MarshalJSON on value.
  // http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go