ProcessingError.toParseError erronausly passes itself as the maybeCause. Compare its definition with that to toUnparseError:
def toParseError = new ParseError(schemaContext, dataContext, Maybe(this), maybeFormatString, args: _*)
def toUnparseError = new UnparseError(schemaContext, dataContext, maybeCause, maybeFormatString, args: _*)
This is particuarly problamatic because ParseError requires one of the maybeFormatString and maybeCause may be defined. If maybeFormatString is defined, then they both would be within ParseError, so no useful error will be reported.