protected SettableBeanProperty(
      PropertyName propName,
      JavaType type,
      PropertyName wrapper,
      TypeDeserializer typeDeser,
      Annotations contextAnnotations,
      PropertyMetadata metadata) {
    // 09-Jan-2009, tatu: Intern()ing makes sense since Jackson parsed
    //  field names are (usually) interned too, hence lookups will be faster.
    // 23-Oct-2009, tatu: should this be disabled wrt [JACKSON-180]?
    //   Probably need not, given that namespace of field/method names
    //   is not unbounded, unlike potential JSON names.
    if (propName == null) {
      _propName = PropertyName.NO_NAME;
    } else {
      _propName = propName.internSimpleName();
    }
    _type = type;
    _wrapperName = wrapper;
    _metadata = metadata;
    _contextAnnotations = contextAnnotations;
    _viewMatcher = null;
    _nullProvider = null;

    // 30-Jan-2012, tatu: Important: contextualize TypeDeserializer now...
    if (typeDeser != null) {
      typeDeser = typeDeser.forProperty(this);
    }
    _valueTypeDeserializer = typeDeser;
    _valueDeserializer = MISSING_VALUE_DESERIALIZER;
  }
 /**
  * Constructor only used by {@link ObjectIdValueProperty}.
  *
  * @since 2.3
  */
 protected SettableBeanProperty(
     PropertyName propName,
     JavaType type,
     PropertyMetadata metadata,
     JsonDeserializer<Object> valueDeser) {
   // as with above ctor, intern()ing probably fine
   if (propName == null) {
     _propName = PropertyName.NO_NAME;
   } else {
     _propName = propName.internSimpleName();
   }
   _type = type;
   _wrapperName = null;
   _metadata = metadata;
   _contextAnnotations = null;
   _viewMatcher = null;
   _nullProvider = null;
   _valueTypeDeserializer = null;
   _valueDeserializer = valueDeser;
 }
 @Override
 public final String getName() {
   return _propName.getSimpleName();
 }
 /** @since 2.3 */
 public SettableBeanProperty withSimpleName(String simpleName) {
   PropertyName n =
       (_propName == null) ? new PropertyName(simpleName) : _propName.withSimpleName(simpleName);
   return (n == _propName) ? this : withName(n);
 }