Because ProductName should be a class. After a second, you realize it's obvious. But for some reason, even for someone like me and someone like the author of this code, who has had years of strictly OO experience, sometimes we start to write elaborate networks of methods to handle primitives.
How to avoid spaghetti: When you write a static method to handle a primitive or string or array, and it's not generally useful for all primitives of the same type, you have encountered a need for a new class. That's not a String you have there, it's a ProductName. That's not a double you have there, it's a TemperatureMeasurement. That's not a byte array! It's a Buffer.
And for those of you who like C, good OO design won't slow down your program if you're writing Java. At least not noticeably, and you almost certainly have bigger performance problems than abstraction overhead. And in the rare case where it does, it is probably still worth avoiding cumbersome technical debt.