Attempted to refactor but ultimately realized that DRYing would
negatively impact clarity--and that the extracted methods wouldn't
be resuable for other metadata-enabled entities.