GenericTypeIndicator

Due to the way that Java implements generics (type-erasure), it is necessary to use a
slightly more complicated method to properly resolve types for generic collections at
runtime. To solve this problem, Firebase Database accepts subclasses of this class in calls
to getValue (getValue(GenericTypeIndicator),
getValue(GenericTypeIndicator)) and returns a properly-typed generic
collection.

As an example, you might do something like this to get a list of Message instances from a
DataSnapshot: