Implemented #425, to migrate from "NoClass.class" to using "Void"
diff --git a/release-notes/VERSION b/release-notes/VERSION
index 77f231d..1b7e65e 100644
--- a/release-notes/VERSION
+++ b/release-notes/VERSION
@@ -32,6 +32,7 @@
 #407: Properly use null handlers for value types when serializer Collection
  and array types
  (contributed by Will P)
+#425: Add support for using `Void.class` as "no class", instead of `NoClass.class`
 #428: `PropertyNamingStrategy` will rename even explicit name from `@JsonProperty`
  (reported by turskip@github)
 #435: Performance bottleneck in TypeFactory._fromClass
diff --git a/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotationIntrospectorPair.java b/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotationIntrospectorPair.java
index f2b6450..39d4fcd 100644
--- a/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotationIntrospectorPair.java
+++ b/src/main/java/com/fasterxml/jackson/databind/introspect/AnnotationIntrospectorPair.java
@@ -11,10 +11,10 @@
 import com.fasterxml.jackson.databind.*;
 import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
-import com.fasterxml.jackson.databind.annotation.NoClass;
 import com.fasterxml.jackson.databind.cfg.MapperConfig;
 import com.fasterxml.jackson.databind.jsontype.NamedType;
 import com.fasterxml.jackson.databind.jsontype.TypeResolverBuilder;
+import com.fasterxml.jackson.databind.util.ClassUtil;
 import com.fasterxml.jackson.databind.util.NameTransformer;
 
 /**
@@ -286,30 +286,29 @@
     @Override
     public Object findSerializer(Annotated am) {
         Object r = _primary.findSerializer(am);
-        return (r == null) ? _secondary.findSerializer(am) : r;
+        return _isExplicitClassOrOb(r, JsonSerializer.None.class)
+                ? r : _secondary.findSerializer(am);
     }
     
     @Override
     public Object findKeySerializer(Annotated a) {
         Object r = _primary.findKeySerializer(a);
-        return (r == null || r == JsonSerializer.None.class || r == NoClass.class) ?
-        		_secondary.findKeySerializer(a) : r;
+        return _isExplicitClassOrOb(r, JsonSerializer.None.class)
+        		? r : _secondary.findKeySerializer(a);
     }
 
     @Override
     public Object findContentSerializer(Annotated a) {
-    	Object r = _primary.findContentSerializer(a);
-        return (r == null || r == JsonSerializer.None.class || r == NoClass.class) ?
-        		_secondary.findContentSerializer(a) : r;
+        Object r = _primary.findContentSerializer(a);
+        return _isExplicitClassOrOb(r, JsonSerializer.None.class)
+        		? r : _secondary.findContentSerializer(a);
     }
     
     @Override
     public Object findNullSerializer(Annotated a) {
-        Object result = _primary.findNullSerializer(a);
-        if (result == null || result == JsonSerializer.None.class || result == NoClass.class) {
-            result = _secondary.findNullSerializer(a);
-        }
-        return result;
+        Object r = _primary.findNullSerializer(a);
+        return _isExplicitClassOrOb(r, JsonSerializer.None.class)
+                ? r : _secondary.findNullSerializer(a);
     }
     
     @Override
@@ -499,27 +498,28 @@
     @Override
     public Object findDeserializer(Annotated am) {
         Object r = _primary.findDeserializer(am);
-        return (r == null) ? _secondary.findDeserializer(am) : r;
+        return _isExplicitClassOrOb(r, JsonDeserializer.None.class)
+                ? r : _secondary.findDeserializer(am);
     }
     
     @Override
     public Object findKeyDeserializer(Annotated am) {
-        Object result = _primary.findKeyDeserializer(am);
-        return (result == null || result == KeyDeserializer.None.class || result == NoClass.class) ?
-                _secondary.findKeyDeserializer(am) : result;
+        Object r = _primary.findKeyDeserializer(am);
+        return _isExplicitClassOrOb(r, KeyDeserializer.None.class)
+                ? r : _secondary.findKeyDeserializer(am);
     }
 
     @Override
     public Object findContentDeserializer(Annotated am) {
-        Object result = _primary.findContentDeserializer(am);
-        return (result == null || result == JsonDeserializer.None.class || result == NoClass.class) ?
-                _secondary.findContentDeserializer(am) : result;
+        Object r = _primary.findContentDeserializer(am);
+        return _isExplicitClassOrOb(r, JsonDeserializer.None.class)
+                ? r : _secondary.findContentDeserializer(am);
     }
     
     @Override
     public Class<?> findDeserializationType(Annotated am, JavaType baseType) {
-        Class<?> result = _primary.findDeserializationType(am, baseType);
-        return (result == null) ? _secondary.findDeserializationType(am, baseType) : result;
+        Class<?> r = _primary.findDeserializationType(am, baseType);
+        return (r != null) ? r : _secondary.findDeserializationType(am, baseType);
     }
 
     @Override
@@ -598,4 +598,15 @@
     public boolean hasCreatorAnnotation(Annotated a) {
         return _primary.hasCreatorAnnotation(a) || _secondary.hasCreatorAnnotation(a);
     }
- }
+
+    protected boolean _isExplicitClassOrOb(Object maybeCls, Class<?> implicit) {
+        if (maybeCls == null) {
+            return false;
+        }
+        if (!(maybeCls instanceof Class<?>)) {
+            return true;
+        }
+        Class<?> cls = (Class<?>) maybeCls;
+        return (cls != implicit && !ClassUtil.isBogusClass(cls));
+    }
+}
diff --git a/src/main/java/com/fasterxml/jackson/databind/jsontype/impl/TypeDeserializerBase.java b/src/main/java/com/fasterxml/jackson/databind/jsontype/impl/TypeDeserializerBase.java
index a860690..8ddb4f4 100644
--- a/src/main/java/com/fasterxml/jackson/databind/jsontype/impl/TypeDeserializerBase.java
+++ b/src/main/java/com/fasterxml/jackson/databind/jsontype/impl/TypeDeserializerBase.java
@@ -189,7 +189,7 @@
     protected final JsonDeserializer<Object> _findDefaultImplDeserializer(DeserializationContext ctxt) throws IOException
     {
         /* 06-Feb-2013, tatu: As per [Issue#148], consider default implementation value of
-         *   {@link NoClass} to mean "serialize as null"; as well as DeserializationFeature
+         *   {@link java.lang.Void} to mean "serialize as null"; as well as DeserializationFeature
          *   to do swift mapping to null
          */
         if (_defaultImpl == null) {