public Map<Class<?>, Method> getTypeMap(Class<? extends Header> type) {
    Map<Class<?>, Method> typeMap = new HashMap<Class<?>, Method>();
    
    for (Method method : type.getMethods()) {
      method.setAccessible(true);
      
      if (method.isAnnotationPresent(TypeMapper.class)) {
        TypeMapper mapper = method.getAnnotation(TypeMapper.class);
        Class<?> mappedType = mapper.value();
        
        typeMap.put(mappedType, method);
      }
    }
    
    return typeMap;
  }