File: src/main/java/com/fasterxml/jackson/databind/introspect/JacksonAnnotationIntrospector.java
Issue: @JsonUnwrapped is not treated as assuming @JsonProperty("")
See discussion here but basically @JsonUnwrapped on a private field by itself does not cause that field to be serialized, currently,  You need to add an explicit @JsonProperty.  You shouldn't have to do that.  (Following test fails currently, should pass, though you can make it pass by commenting out the line with @JsonProperty.  Uses TestNG and AssertJ.)
package com.bakins_bits;

import static org.assertj.core.api.Assertions.assertThat;

import org.testng.annotations.Test;

import com.fasterxml.jackson.annotation.JsonUnwrapped;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class TestJsonUnwrappedShouldMakePrivateFieldsSerializable
{
    public static class Inner
    {
        public String animal;
    }

    public static class Outer
    {
        // @JsonProperty
        @JsonUnwrapped
        private Inner inner;
    }

    @Test
    public void jsonUnwrapped_should_make_private_fields_serializable() throws JsonProcessingException {
        // ARRANGE
        Inner inner = new Inner();
        inner.animal = "Zebra";

        Outer outer = new Outer();
        outer.inner = inner;

        ObjectMapper sut = new ObjectMapper();

        // ACT
        String actual = sut.writeValueAsString(outer);

        // ASSERT
        assertThat(actual).contains("animal");
        assertThat(actual).contains("Zebra");
        assertThat(actual).doesNotContain("inner");
    }
}

Buggy code:
public PropertyName findNameForSerialization(Annotated a)
{
    String name = null;

    JsonGetter jg = _findAnnotation(a, JsonGetter.class);
    if (jg != null) {
        name = jg.value();
    } else {
        JsonProperty pann = _findAnnotation(a, JsonProperty.class);
        if (pann != null) {
            name = pann.value();
            /* 22-Apr-2014, tatu: Should figure out a better way to do this, but
             *   it's actually bit tricky to do it more efficiently (meta-annotations
             *   add more lookups; AnnotationMap costs etc)
             */
        } else if (_hasAnnotation(a, JsonSerialize.class)
                || _hasAnnotation(a, JsonView.class)
                || _hasAnnotation(a, JsonRawValue.class)) {
            name = "";
        } else {
            return null;
        }
    }
    return PropertyName.construct(name);
}

Fixed code:
public PropertyName findNameForSerialization(Annotated a)
{
    String name = null;

    JsonGetter jg = _findAnnotation(a, JsonGetter.class);
    if (jg != null) {
        name = jg.value();
    } else {
        JsonProperty pann = _findAnnotation(a, JsonProperty.class);
        if (pann != null) {
            name = pann.value();
            /* 22-Apr-2014, tatu: Should figure out a better way to do this, but
             *   it's actually bit tricky to do it more efficiently (meta-annotations
             *   add more lookups; AnnotationMap costs etc)
             */
        } else if (_hasAnnotation(a, JsonSerialize.class)
                || _hasAnnotation(a, JsonView.class)
                || _hasAnnotation(a, JsonRawValue.class)
                || _hasAnnotation(a, JsonUnwrapped.class)
                || _hasAnnotation(a, JsonBackReference.class)
                || _hasAnnotation(a, JsonManagedReference.class)) {
            name = "";
        } else {
            return null;
        }
    }
    return PropertyName.construct(name);
}