I think the concept of derivative work is more important here. IANAL but I suspect there's a difference between copying someone's Skip List class (maybe modding it a bit) vs. writing your own even if your own compiles to mostly-the-same binary. Your own wasn't derivative even if the end result was very similar.