improve FieldSetter and rename it to FieldReflection