Piping view definitions through
diff --git a/src/main/java/com/fasterxml/jackson/databind/introspect/POJOPropertyBuilder.java b/src/main/java/com/fasterxml/jackson/databind/introspect/POJOPropertyBuilder.java
index 0b46f0b..2ac3c08 100644
--- a/src/main/java/com/fasterxml/jackson/databind/introspect/POJOPropertyBuilder.java
+++ b/src/main/java/com/fasterxml/jackson/databind/introspect/POJOPropertyBuilder.java
@@ -1,5 +1,6 @@
 package com.fasterxml.jackson.databind.introspect;
 
+import com.fasterxml.jackson.databind.AnnotationIntrospector;
 import com.fasterxml.jackson.databind.BeanPropertyDefinition;
 
 /**
@@ -11,6 +12,14 @@
     implements Comparable<POJOPropertyBuilder>
 {
     /**
+     * Whether property is being composed for serialization
+     * (true) or deserialization (false)
+     */
+    protected final boolean _forSerialization;
+
+    protected final AnnotationIntrospector _annotationIntrospector;
+    
+    /**
      * External name of logical property; may change with
      * renaming (by new instance being constructed using
      * a new name)
@@ -30,21 +39,26 @@
     protected Node<AnnotatedMethod> _getters;
 
     protected Node<AnnotatedMethod> _setters;
-
-    public POJOPropertyBuilder(String internalName)
+    
+    public POJOPropertyBuilder(String internalName, AnnotationIntrospector annotationIntrospector,
+            boolean forSerialization)
     {
         _internalName = internalName;
         _name = internalName;
+        _annotationIntrospector = annotationIntrospector;
+        _forSerialization = forSerialization;
     }
 
     public POJOPropertyBuilder(POJOPropertyBuilder src, String newName)
     {
         _internalName = src._internalName;
         _name = newName;
+        _annotationIntrospector = src._annotationIntrospector;
         _fields = src._fields;
         _ctorParameters = src._ctorParameters;
         _getters = src._getters;
         _setters = src._setters;
+        _forSerialization = src._forSerialization;
     }
 
     /**
@@ -104,29 +118,6 @@
     public boolean hasConstructorParameter() { return _ctorParameters != null; }
 
     @Override
-    public AnnotatedMember getAccessor()
-    {
-        AnnotatedMember m = getGetter();
-        if (m == null) {
-            m = getField();
-        }
-        return m;
-    }
-
-    @Override
-    public AnnotatedMember getMutator()
-    {
-        AnnotatedMember m = getConstructorParameter();
-        if (m == null) {
-            m = getSetter();
-            if (m == null) {
-                m = getField();
-            }
-        }
-        return m;
-    }
-
-    @Override
     public boolean couldSerialize() {
         return (_getters != null) || (_fields != null);
     }
@@ -247,6 +238,42 @@
         return _ctorParameters.value;
     }
     
+    @Override
+    public AnnotatedMember getAccessor()
+    {
+        AnnotatedMember m = getGetter();
+        if (m == null) {
+            m = getField();
+        }
+        return m;
+    }
+
+    @Override
+    public AnnotatedMember getMutator()
+    {
+        AnnotatedMember m = getConstructorParameter();
+        if (m == null) {
+            m = getSetter();
+            if (m == null) {
+                m = getField();
+            }
+        }
+        return m;
+    }
+
+    /**
+     * Method that will try to find JSON View inclusion information
+     * for this property.
+     */
+    public Class<?>[] getViews()
+    {
+        if (_annotationIntrospector != null) {
+            AnnotatedMember m = _forSerialization ? getAccessor() : getMutator();
+            return _annotationIntrospector.findViews(m);
+        }
+        return null;
+    }
+    
     /*
     /**********************************************************
     /* Data aggregation