I made a script that counts all the diamonds in the level (so I wouldn't miss any when counting by hand) and suprise, suprise - it also counts keys :) Should've guessed that if class extends from Diamond (Key extends Diamond class) that key will also be counted as diamond instance. However collected Key won't count as a Diamond because each item has it's own collection method that does not depends on item type.
Hats of to you, and mad respect for your curiosity. Sorry for my mistake!
The 56 is maximum you can find, one diamond is duplicated. Therefore you have made 100% progress.