There are three cases:
1.- Return a **Field instance. It means we have field type
2.- Raise an exception. It mean we can't recognize value type
3.- Returns None it means we have to ignore field value