do not know at compile time that input is not marshalable, every language marshal must return error for this reason, not only golang