Gabriel #1 You could create a base type which has abstract methods for all the shared methods, have all the other types extend that type, and then make the array an array of your basetype instead of an array of objects.