title: Compile protobuf to use primitive classes instead of well-known types
body: <p>Lets say I have test.proto file:</p>
  
  <pre><code>syntax = "proto3";
  
  option java_package = "testing";
  option java_outer_classname = "Test_v1";
  
  import "google/protobuf/wrappers.proto";
  
  message TestMessage {
      .google.protobuf.Int32Value integerField = 1;
  }
  </code></pre>
  
  <p>If I compile (using protoc v3.5.0) it to c# code I will get nullable type properties:</p>
  
  <pre><code>public int? IntegerField {
     get { return integerField_; }
     set { integerField_ = value; }
   }
  </code></pre>
  
  <p>But if I compile it to Java code, fields will be of well-known type:</p>
  
  <pre><code>public Builder setIntegerField(com.google.protobuf.Int32Value value) {
    if (integerFieldBuilder_ == null) {
      if (value == null) {
        throw new NullPointerException();
      }
      integerField_ = value;
      onChanged();
    } else {
      integerFieldBuilder_.setMessage(value);
   }
  </code></pre>
  
  <p>I am moving project from proto2 to proto3 so I would like to avoid using well-known types, because it will require a lot of work to change related code. With c# projects I will not require to modify anything but in Java I will need to do as in the following example: </p>
  
  <pre><code>TestMessage.Builder builder = TestMessage.newBuilder();
  builder.setIntegerField(5); //&lt;-- instead of this with proto2
  builder.setIntegerField(Int32Value.newBuilder().setValue(5)); //&lt;-- I will need to do something like this with proto3
  </code></pre>
  
  <p>Is there a way to compile <code>proto</code> file to Java so setters would accept primitive classes/wrappers (String, Integer, etc.) as parameters?</p>