refactored InformationElement.valueOf to use annotations and be more fexible to new element implementation