code: @Override
      public Metadata metadataOf(AnnotatedMember<?> member) {
          // getBaseType is a reflection proxy class, we can't directly compare the classes.
          // If type can be determined more efficiently, we can remove the overloaded methods that pass in class
          String typeName = member.getBaseType().getTypeName();
          if (typeName.startsWith(Gauge.class.getName())) {
              return metadataOf(member, Gauge.class);
          } else if (typeName.startsWith(Counter.class.getName())) {
              return metadataOf(member, Counter.class);
          } else if (typeName.startsWith(Meter.class.getName())) {
              return metadataOf(member, Meter.class);
          } else if (typeName.startsWith(Histogram.class.getName())) {
              return metadataOf(member, Histogram.class);
          } else if (typeName.startsWith(Timer.class.getName())) {
              return metadataOf(member, Timer.class);
          }
          return null;
      }
docs: {@inheritDoc}