@pruivo I know it's a little late now, but why isn't this a top-level class? It seems that you have two identical implementations as inner classes, only the third is different.